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

为什么没有java on rails——代码量少才是王道

浏览 23147 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-06-23   最后修改:2009-06-23
pipilu 写道

    另外,一个设计的很灵活的程序,它会比一个“写死”了的程序,代码量要多出好多,但改的时候,“写死”的那个程序,改起来可谓是伤筋动骨的。而设计灵活的程序,所做的可能仅仅是修改一个配置,或者加几个适配器。这也是代码少并不代表改的快的例子。


本来是横向比较,怎么跑题到纵向比较了。

老实说我觉得灵活的 Ruby 太难“写死”了,前面已经说过,和动态语言尤其是解释型的 Ruby 比灵活性和松耦合,就是自取其辱 ……

其实你隐含了一个前提,你觉得长的代码做了更多的事情 —— 但是如果长代码和短代码做了同样的事情,又有同样的门面呢? 代码冗长的很大一部分原因在于重复,无谓的大量重复。大量复制粘贴,或者 IDE 给你自动完成,变相复制粘贴。
0 请登录后投票
   发表时间:2009-06-23  
night_stalker 写道
pipilu 写道

    另外,一个设计的很灵活的程序,它会比一个“写死”了的程序,代码量要多出好多,但改的时候,“写死”的那个程序,改起来可谓是伤筋动骨的。而设计灵活的程序,所做的可能仅仅是修改一个配置,或者加几个适配器。这也是代码少并不代表改的快的例子。


本来是横向比较,怎么跑题到纵向比较了 ……

老实说我觉得灵活的 Ruby 太难"写死"了 ……


在一个团队中,是否有代码质量参差的机会更高?
0 请登录后投票
   发表时间:2009-06-23  
ray_linn 写道
在一个团队中,是否有代码质量参差的机会更高?


团队越大越参差 …… 所以,还能得出一个大部分情况都成立的规律: 代码越长越参差 ……
0 请登录后投票
   发表时间:2009-06-23   最后修改:2009-06-23
我不明白hibernate和rails的active record有什么本质的区别.
一个是基于xml配置的,在xml中配置类与表,类属性与表列的关系,一个是直接基于一种约定,绑定死类与表,类属性与列.
除了这个还有什么?
这点区别很重要吗?
0 请登录后投票
   发表时间:2009-06-23  
ironsabre 写道
我不明白hibernate和rails的active record有什么本质的区别.
一个是基于xml配置的,在xml中配置类与表,类属性与表列的关系,一个是直接基于一种约定,绑定死类与表,类属性与列.
除了这个还有什么?
这点区别很重要吗?


问你个问题:h 可以轻松的做运行时绑定么?

譬如我想让一个类绑定到 A 表,然后在网页上点一个键,就让它绑定到 B 表。

ar 就很简单 ……
0 请登录后投票
   发表时间:2009-06-23   最后修改:2009-06-23
每一门语言都有自己的特点,我们不能用java的思想去想ruby,反之也一样

写的代码是否好维护,在于你所写代码的质量,不于在语言本身

0 请登录后投票
   发表时间:2009-06-23  
night_stalker 写道
ironsabre 写道
我不明白hibernate和rails的active record有什么本质的区别.
一个是基于xml配置的,在xml中配置类与表,类属性与表列的关系,一个是直接基于一种约定,绑定死类与表,类属性与列.
除了这个还有什么?
这点区别很重要吗?


问你个问题:h 可以轻松的做运行时绑定么?

譬如我想让一个类绑定到 A 表,然后在网页上点一个键,就让它绑定到 B 表。

ar 就很简单 ……


能了又如何?
0 请登录后投票
   发表时间:2009-06-23   最后修改:2009-06-23
ironsabre 写道
能了又如何?

你不是比灵活么,这就是 ar 比 h 灵活的例子啊。
什么绑定死了,你不知道 ar 是可以改表改列的么 ……

区别在:配置是死的,ar 的对应关系只是类方法调用。

Coc 无非是设定良好的默认值,但是 Coc 不代表不能改。
0 请登录后投票
   发表时间:2009-06-23   最后修改:2009-06-23
ironsabre 写道
night_stalker 写道
ironsabre 写道
我不明白hibernate和rails的active record有什么本质的区别.
一个是基于xml配置的,在xml中配置类与表,类属性与表列的关系,一个是直接基于一种约定,绑定死类与表,类属性与列.
除了这个还有什么?
这点区别很重要吗?


问你个问题:h 可以轻松的做运行时绑定么?

譬如我想让一个类绑定到 A 表,然后在网页上点一个键,就让它绑定到 B 表。

ar 就很简单 ……


能了又如何?


AR的扩展性可不是你所能想象的

    
引用

      def self.included(base) # :nodoc:    
        base.class_eval do
          alias_method :hello, :hello_with_world
        end     
      end  


so what ?
0 请登录后投票
   发表时间:2009-06-23  
ray_linn 写道
night_stalker 写道
ray_linn 写道

我想现在即使再出现ruby orm框架,大家也会考虑尽量facade到AR里去,而不是象JDO与Hibernate那样差别巨大。


你这个需求比较奇怪,既要用新 ORM,又不能改代码 ……

正常来说没人会这么想的,大部分人一开始选好框架就不换了。想中途换 ORM 框架的,目的基本都是想要大量重构让代码变得 pp ……

我觉得新框架出现的原因是:这些人对 AR 的写法存在不满 ……

如果不是为了让代码写起来更 pp,我才不把 AR 换掉呢。



新近的ORM代表有啥。。。。俺一直想C# 4.0之后,很有可能为C#其写一个AR,而不需要nhibernate.

用LINQ
0 请登录后投票
论坛首页 编程语言技术版

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