10/25/2006

Rails 的原始碼行數比?

實例

看完 JavaEye 今天的文章,發現到根據 Robbin 估計
网站来说,包含了forum,blog,SNS三种大型软件 的主要功能,每个部分单独去做,都要花好几个月,合起来的代码量(包括XML配置行数)保守估计至少要3-5万行。现在用ruby on rails编写,ruby代码量只有不到5000行。
根據 Robbin 這一篇截至现在JavaEye2.0 CVS上面代码行数,目前只有 3243行code。他保守估計 Java 跟 Rails 原始碼行數,大概是 6 : 1 ~ 10:1 的份量。

根據 poocs.net 在這篇文章的說法
The old codebase roughly consisted of around 50.000 lines of PHP code (plus a closed-source CMS that’s not included in this calculation). We’ve rewritten most of it (some features were left out on purpose) in about 5.000 lines of Rails code.
他用 Rails 改寫 PHP 現有的 Project ,做出來的原始碼行數 PHP : Rails 是 10 : 1(註1)

根據 Beyond JAVA 裡面,Justin Gehtland 用 Rails 重寫一個用 JAVA Spring/Hibernate 寫好的 Project,他發現程式碼比例 JAVA :Rails 大概是 3.48 : 1 。附帶一提,他重寫的開發時間開發時間比是 16 : 1,更噁心的數字。(註2)

我曾經將以前寫過的一個小小 PHP Project 重寫,之前使用的 Framework 是我自己寫的 MVC 架構的PHP 程式。扣掉 HTML code ,程式碼行數大概PHP :Rails 是 8 : 1 左右吧。

GMANE 裡面有一位 Rick Bradley 提出一個healthcare網站的實例,他們將 JAVA/Hibernate/JSP/pojos/beans/Struts/Ajax 的專案轉換到 Ruby on Rails 時,他發現所有程式碼比例: JAVA 比 Rails 高達 20853 : 823,這是 25 : 1 的可怕程式碼數量比例。(註3)

結論

開發時間很難去作 Benchmark ,不過程式碼行數就很赤裸裸了。我們可以發現到,Rails 在程式碼行數上面的優勢還是相當相當明顯的。程式碼的行數代表的意思不只是開發速度的快慢有絕對的正相關,維護程式的速度也會加快,重構等等議題也會簡單許多,這是一個 Ruby on Rails 巨大的優勢。


註解
  1. 根據原文,PHP行數裡面,沒有計算一個 close source 的 CMS ,用 Ruby on Rails 實做時,也沒有implement 一些他們後來認為不重要的功能。我將兩者造成的程式碼數量增減都視為抵銷
  2. 原始碼的比例是 3293:1164,設定檔的行數是 1161:113
  3. GMANE提出 25 : 1 的驚人實例的詳細數據列表
Java version:

10361 lines of Java code
1143 lines of JSP
8082 lines of XML
1267 lines of build configuration
-----------------------------------------------------------
20853 TOTAL lines of stuff

Rails version:

494 lines of code (386 "LOC" per rake stats)
254 lines of RHTML
75 lines of configuration (includes comments in routes.rb)
0 lines of build configuration
-----------------------------------------------------------
823 TOTAL lines of stuff

7 則留言:

匿名 提到...

如果3-5万行java代码(如果把测试代码也算上,估计能到10万行,javaeye2.0没写测试代码,所以这里还是按照主体代码3-5万行算)只能写出javaeye2.0这样的网站,我想所有玩过java较大规模项目的那帮哥们都要爽死了.3-5万行java代码的行价至少在30-50万人民币..........

thegiive 提到...

我是不確定 3-5萬行 JAVA Code 行價多少啦。不過,我列舉的數據都有來源,所以你可以去問問 Robbin 他有沒有高估啦。如果 Robbin 修正了估計數據,我也會同步修正:)

匿名 提到...

開發速度不用說,一定是直譯式的script語言快..

但是我對結論有點不同的看法...
1.java開發慢與程式碼的行數應該沒有這麼強烈的關係; 不同的語言有不同的風格,而且現在java有許多自動產生程式碼的套件與IDE的幫助; java是因為架構複雜,需要較多的設定,並不是因為實際要寫的程式碼比較多.

2.程式的維護性應該還是語言的架構和專案的品質比較有關,java的架構在維護性上應該不算差
更不用提重構了..雖然我不熟悉ruby,但是沒有編譯的語言,IDE能幫助重構的部分應該更有限吧

ror當然是一個優秀的framework,但是我實在看不出LOC比較短可以得出原文的結論.

哈...寫完才發現..為什麼這麼舊的文章會出現在bloglines的訂閱裡..
btw,我也是從ptt連過來的 :)

匿名 提到...

sry,上一篇的java開發,泛指j2ee的mvc :P

thegiive 提到...

關於第一點

當然 IDE 以及一些程式產生工具可以幫助開發者,但是那是有限的。程式碼多少是很直接的,看一千跟看五千行 code 怎麼想都是看一千行 code 比較好看。

IDE 可以幫助維護,但是他能做到的其實有限。

thegiive 提到...
作者已經移除這則留言。
thegiive 提到...

關於第二點

JAVA 的架構跟可維護性當然不算差,但是我認為 Ruby on Rails 更好。不過這個結論是基於「我本身不是很喜歡 Java 龐大又複雜的架構,冗長的語法」的前提下。

至於真的要比較這兩者的可維護性就真的是一個大工程了。