Rails 的相关感想
怎样回答“Ruby 没有类型声明,在规范的系统里能使用吗?”这样的问题
Ruby 这门编程语言具有不用声明变量和方法的类型(type)的特征。
在很多地方讲到 Ruby on Rails 时,被屡次问到这个问题。
Ruby 没有类型声明,在规范的系统里能使用吗?
一句话,就是 Ruby 做的系统具有稳定性吗。
这个问题怎样回答才好呢?
我的回答是类型声明并不能使系统的稳定性变高。
确实存在因为声明而被发现的错误(缺陷)。
例如,如果声明 a 变量具有字符串类型,这里如果存在存储整数型值的处理,就是一个错误。
可是,在现代的编程中 ,这种错误不太会产生。
最大的原因是、面向对象编程和单元测试的思想普及了。
面向对象编程里,是将程序的构成元素作为“对象(物)”处理。
信息在对象之间传递,程序便发挥其功能。
对象是否正确发挥功能,是根据叫做“单元测试”的程序来确认的。
单元测试从各个侧面检查对象所持有的变量以及方法接收、返回的对象。
不仅仅是变量和方法的类型,值的范围和元素个数也要被检查。
通过单元测试,可以进行比编译器的类型检查更深一层的验证。
同时,根据近几年普及的编程方法,类型声明的作用也变小了。
我们也被告知方法应该变短,过长的话就要被切割。
另外,赋予变量与方法容易理解的名字得到大力提倡。
如果以这样的方法编程,类型获取不正确这样的错误几乎不会发生了。
类型声明有助于基于编译器的最优化,所以有利于提高系统性能。
但于系统的稳定性却没什么关系。
参考文献
- 《编程Ruby第2版》 ohmsha、p.315-316
- 松本直传 编程守则 第4章(3)在Duck Typing生成之前 ITPro
- 试着写写关于Rails的心里话吧 HIGAYASUO的blog
- Re:试着写写关于Rails的心里话吧 moro 日记
--
黒田努
(2008/11/23)
- 前言
- Rails是否能成为企业领域的主流 (2008/03/29)
- Rails 2.0 测速 (2008/03/30)
- 测试驱动开发和调试代码 (2008/04/07)
- Git or Mercurial (2008/04/22)
- RESTful Ruby on Rails -- 美丽与复杂 (2008/04/23)
- RESTful Ruby on Rails -- 单数与复数 (2008/04/24)
- 读 Rails 的源码 (2008/05/02)
- sudo: no passwd entry for app! (Capistrano 2.3.0) (2008/05/12)
- Rails on GlassFish (2008/06/18)
- 怎样回答“Ruby 没有类型声明,在规范的系统里能使用吗?”这样的问题 (2008/11/23)
- 怎样回答“Ruby是脚本语言,不是有点慢吗”这样的问题 (2008/11/24)
- 哪种编程语言将来有前途 (2009/01/10)
- 哪种框架将来有前途 (2009/01/11)
- 框架 VS CMS (2009/01/12)
- Rails 2.3 spawner/reaper 变为 DEPRECATED (2009/03/25)
- db/seeds.rb (2009/06/08)
- LESS与Sass (2009/08/03)
- Rails 2.3.4 与 I18n (2009/08/15)

