技术开发 频道

Ruby的开放不适合大型的工程?

IT168 分析评论】 
    Ruby近来高频率的出现在我们的视野里,很多人都有一个共识是Ruby在开发中具有很高的的高效性,很多人从他们熟悉的语言像Python,Java等充满激情的转向了Ruby,然而,作为初学者,可能对Ruby有些怀疑,尤其是Ruby在大的工程中使用,作为有经验的Java开发者,这些怀疑可能与他们的一些经验有关,因此,有些人就会要问:Ruby是否能够适应于大型的工程项目呢? 

    在Artima社区里,有人通过研究Ruby的面向对象的特性发现: 

    Ruby里的类从不关闭,你总能在现有的类中添加方法,你自己按照标准写的类,标准的,内嵌的类也是如此,你所做的就是为一个存在的类来进行类的定义,而且你所指定的新的内容也被添加进去. 

    同时,你也能够修正一个在已经存在的类中的方法,例如,我们考虑如下代码:
class Folder def initialize(name) @name = name @files = Array.new end def addFile(newFile) @files.push(newFile) end def list puts @name+":" for i in 0...@files.length puts "--"+@files[i] end end end #base semantics aFolder = Folder.new("reports") aFolder.list puts "here we're ..." #............... #............... #............... #............... #............... #............... #override class Folder def list puts @name+":" if @files.length == 0 raise "empty folder!" end for i in 0...@files.length puts "--"+@files[i] end end end #modified semantics aFolder = Folder.new("reports") aFolder.list puts "never reached!!"
    上述例子中方法清单的语义已经被改变了,如果数组为空,方法的第一各注释并没有产生异常,第二各个也是,在某些环境下,这可能是一个有用的特性.在Java中,如果在工程中处理java.util.ArrayList,那么你可以不必过多的考虑他的语义,而在Ruby中,要处理Array,你就一定小心他的语义在某处被改变,当然,检查的地方越多,所花的时间也就越多,你能相信在大的工程中,每个开发者改变任何范围中的任何类的语法不会有问题吗?
0
相关文章