论坛首页 编程语言技术论坛

我喜欢Ruby的原因

浏览 68529 次
精华帖 (0) :: 良好帖 (12) :: 新手帖 (0) :: 隐藏帖 (2)
作者 正文
   发表时间:2008-04-17  
我也贴一下BaoMingBa.com的rake stats吧
+----------------------+-------+-------+---------+---------+-----+-------+
| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers          |   246 |   199 |       6 |      29 |   4 |     4 |
| Helpers              |    30 |    25 |       0 |       1 |   0 |    23 |
| Models               |   311 |   234 |       6 |      47 |   7 |     2 |
| Libraries            |   136 |    72 |       0 |      17 |   0 |     2 |
| Integration tests    |    75 |    57 |       1 |       6 |   6 |     7 |
| Functional tests     |   440 |   340 |       7 |      44 |   6 |     5 |
| Unit tests           |   290 |   228 |       5 |      34 |   6 |     4 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total                |  1528 |  1155 |      25 |     178 |   7 |     4 |
+----------------------+-------+-------+---------+---------+-----+-------+
  Code LOC: 530     Test LOC: 625     Code to Test Ratio: 1:1.2

Robbin说的那个,一个类两百多行的,对于我来说就是不可接受…不过比起Java来终归是好得太多了。
ActionScript到现在都没有一个成熟的MVC框架,并且ActionScript是一个很蠢的语言,写出代码来根本不显得比Java少。
0 请登录后投票
   发表时间:2008-04-17  
gigix 写道
我也贴一下BaoMingBa.com的rake stats吧
+----------------------+-------+-------+---------+---------+-----+-------+
| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers          |   246 |   199 |       6 |      29 |   4 |     4 |
| Helpers              |    30 |    25 |       0 |       1 |   0 |    23 |
| Models               |   311 |   234 |       6 |      47 |   7 |     2 |
| Libraries            |   136 |    72 |       0 |      17 |   0 |     2 |
| Integration tests    |    75 |    57 |       1 |       6 |   6 |     7 |
| Functional tests     |   440 |   340 |       7 |      44 |   6 |     5 |
| Unit tests           |   290 |   228 |       5 |      34 |   6 |     4 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total                |  1528 |  1155 |      25 |     178 |   7 |     4 |
+----------------------+-------+-------+---------+---------+-----+-------+
  Code LOC: 530     Test LOC: 625     Code to Test Ratio: 1:1.2

Robbin说的那个,一个类两百多行的,对于我来说就是不可接受…不过比起Java来终归是好得太多了。
ActionScript到现在都没有一个成熟的MVC框架,并且ActionScript是一个很蠢的语言,写出代码来根本不显得比Java少。


我学习flex有一段时间了,期间也摸索了它的一些框架、架构设计、编程语言等方面的东西,整体感觉上完全如gigix所说,这个东东在表现层的架构上十分棒,简直是理想中的理想。在框架上欠缺,在编程语言上,我就把它当成java语言微调后的产物。不同的动态语言相差甚远,正如静态语言中C和java一样 -- 尽管我了解这一点,但在内心深处,如果一个人拿AS3的动态性而嘲笑ruby,我觉得对ruby是莫大的侮辱。 -- 不过还好了,这是我的个人感情,也不具专业精神,看的人一笑而过吧,我上面的话大家可以看作一个flex/air/AS3初学者的感受。也欢迎AS3大牛指正。

另外, robbin说的是:javaeye行数最多的model有224行,不是平均行数。
0 请登录后投票
   发表时间:2008-04-17  
参考我们现在的情况,可以回答两个问题:
1. 动态添加的方法不易控制。
完全没有这种感觉,而且有完全可控感。我们系统是基于rails的,排除非rails的情况。我们team所有人都清楚的知道哪些地方可以使用哪些方法。
可能会有team成员不清楚某些方法到底在哪里mixin进去的,但这丝毫不影响正确使用。正如很多java程序员会使用某些Util类,却不知道它在哪个jar中定义一样。反倒是如果没有方法动态生成,我很难想像rails这个框架会是什么样,我们开发者会愁成什么样。
至于文档方面,我觉得IDE的提示功能上,我承认它能做到的和已做到的是比java的差一些,但还算不错了,而如果直接查doc,那甚至比java还舒服。
对于rails工程而言,需要方法动态生成的情况不多。方法动态生成一般由rails框架或者是plugin完成,而系统需要哪些plugin,要达到什么目标,如何取舍,都必须是明确可控的。目前来说我们系统用到的plugin也不多,方法动态加入的更少,我们也不需要那么多。
网上可选的plugin很多,良莠不齐,向自己工程引入一个plugin需要评估权衡,需要team中至少有一个人完全读过它的代码,在实现、性能、代码质量上完全有把握,必要时候可以自由裁剪。
另外,跑下题,plugin通常做的(但不限于),是在rails公开稳定的接口上做增强,而现实情况是,很多plugin修改了rails的底层实现以达到某些目标,有时这样做是出于无耐(rails没有提供扩展接口),但这终是违背了plugin的本旨,最终在维护、升级上会让人吃苦头。

2. ruby对一个问题可以有多种解法,这会带来大团队合作和维护上的问题。
完全不会,同样我是限制在用rails开发WEB系统这个场景下,至于用ruby做系统管理等的情况我没有经验,也许会不一样。
其实你会发现,在不同的场景下,虽然有不同的解法,但你会清楚的知道哪种最好,其实多数情况当你面对一个问题时,你都不会想到其它解法。这个在team中开发过一段时间就都接受了。这种看似多种解法,实质最佳只有一种的情况,对于维护和团队协作是相当有利的。
0 请登录后投票
   发表时间:2008-04-17  
我从另外一个角度说说ruby吧...要掌握ruby要花的时间,从目前的学习方法来看确实比掌握C语言或者Java语言要来的难些。(但是要达到“精通”的程度,就因人而异了。)

但是这个是ruby的缺点么?不见得,综合考虑生产效率因素,还是非常值得。

未来在编程技术方面的趋势,我想是对程序员的要求越来越高,而不是越来越低。程序员的个人生产效率会越来越高,会出现越来越多的“小”公司可以做“大”项目,超大型团队合作开发的重要性不再那么突出。

类似ruby的动态语言,很适合这个潮流。

0 请登录后投票
   发表时间:2008-04-17  
ltian 写道
我目前使用Flex开发,用到的AS3据说也是动态语言,由于动态增加属性造成维护困难的问题,所以就说了一下。



我现在这个项目用Flex开发也已经有大半年了,从来没有在动态属性的问题上遇到过麻烦。并不是没有遇到过错误,只是这些问题,在调试器帮助下我们那些菜鸟程序员基本上能在几分钟内定位到错误原因。粗略统计,和解决臭名卓著的NPE问题代价差不多,完全没有那么可怕。

其实我看到的一个有趣的现象是,动态语言最能发挥威力的地方,恰恰是那些程序员不希望、事实上也很可能不需要手工去维护的领域,包括Flex里面的服务层数据访问、E4X调用,以及Rails中的ActiveRecord,我们只是使用它,让动态语言在幕后发挥作用,很少需要手工来维护这样一个东西,基本上也不用担心有人来破坏它。在这个前提下,对动态语言质疑最多的维护问题,真的是一个问题吗?我是有怀疑的。
0 请登录后投票
   发表时间:2008-04-17  
rubynroll 写道
我从另外一个角度说说ruby吧...要掌握ruby要花的时间,从目前的学习方法来看确实比掌握C语言或者Java语言要来的难些。

这个…
我大学里学了四年C,工作用了一年多,到现在我看见C程序都犯怵
0 请登录后投票
   发表时间:2008-04-17  
引用
然后你再在Ruby语言解析器的性能、稳定性上大作文章,
这样就从底层实现上波及所有ruby有关的应用开发,只要Rails还在Ruby语言解析器上跑,自然也被拖进泥潭啦。

这个话说得就很外行。解释器(不是解析器)做得不好是可以改进的,C-Ruby(就算真的)做得不好可以在CLR或者JVM上面做,性能不好可以做JIT编译。只要语言确实好,有杀手应用,这些底层的问题都有办法解决。而且我说的这些东西,都是已经或者正在发生的。至于说什么Mats的解释器里写了多少多少行的C程序,第一他做的是语言不是应用,第二那正好说明人们需要高级的语言,比如XRuby和JRuby的情况就比他好得多。
0 请登录后投票
   发表时间:2008-04-17  
gigix 写道

Robbin说的那个,一个类两百多行的,对于我来说就是不可接受…不过比起Java来终归是好得太多了。
ActionScript到现在都没有一个成熟的MVC框架,并且ActionScript是一个很蠢的语言,写出代码来根本不显得比Java少。


真是以讹传讹,我说的是最大的model是224行,不是每个model 224行

+----------------------+-------+-------+---------+---------+-----+-------+
| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers          |  2755 |  2346 |      46 |     377 |   8 |     4 |
| Helpers              |   458 |   422 |       0 |      37 |   0 |     9 |
| Models               |  1990 |  1657 |      51 |     243 |   4 |     4 |
| Libraries            |   782 |   650 |       9 |      73 |   8 |     6 |
| Model specs          |  1175 |   895 |       0 |       0 |   0 |     0 |
+----------------------+-------+-------+---------+---------+-----+-------+


这个是JavaEye的rake stats,46个controller,平均每个controller不过51行代码,每个方法4行代码;51个model,平均每个model不过32行代码,每个方法4行代码

0 请登录后投票
   发表时间:2008-04-17  
robbin 写道
gigix 写道

Robbin说的那个,一个类两百多行的,对于我来说就是不可接受…不过比起Java来终归是好得太多了。
ActionScript到现在都没有一个成熟的MVC框架,并且ActionScript是一个很蠢的语言,写出代码来根本不显得比Java少。

真是以讹传讹,我说的是最大的model是224行,不是每个model 224行

我说的就是最大的那一个类,不要误会。项目里总是难免出现一些“大块头”的,然则Rails应用的“大块头”顶多也就是百行级的,200行就会让人印象深刻,这本身就很说明问题了。
0 请登录后投票
   发表时间:2008-04-17  
gigix 写道
robbin 写道
gigix 写道

Robbin说的那个,一个类两百多行的,对于我来说就是不可接受…不过比起Java来终归是好得太多了。
ActionScript到现在都没有一个成熟的MVC框架,并且ActionScript是一个很蠢的语言,写出代码来根本不显得比Java少。

真是以讹传讹,我说的是最大的model是224行,不是每个model 224行

我说的就是最大的那一个类,不要误会。项目里总是难免出现一些“大块头”的,然则Rails应用的“大块头”顶多也就是百行级的,200行就会让人印象深刻,这本身就很说明问题了。


嗯,其实我也有这种感觉,在Rails框架下面,上百行的ruby源文件就已经让人觉得:“这代码写得太多了吧?”,特别是和其他大部分只有二三十行的源文件相比,特别的扎眼。

我们最大的topic.rb有224行,我刚统计了一下有近70行代码是全文检索功能引入的,其实这部分代码要剥离出去也行,只不过我们做网站的,开发效率第一,代码质量第二,有时候顾不上那么多了。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics