代码天敌之体积
前言:好吧,我覺得Steve yegge的牢騷能力太棒了,以至于我不得不重新來審視自己,到底我該怎么對待Java,怎么對待我熱愛了8年的Java,當然了,到目前為止,我可沒有被Steve忽悠著去學習新的語言,如ruby,我還會待在Java的陣營,但是有必要,我要對自己以往的代碼進行審視,看看Java代碼的天敵到底是什么?
經(jīng)常不經(jīng)意間就發(fā)現(xiàn)文章被扣到各式各樣的網(wǎng)站上面,甚是可惡!
那么人生何處不爬蟲,爬蟲請標http://blog.csdn.net/qing_gee
見賢思齊焉,見不賢而內(nèi)自省也!
代碼統(tǒng)計
這是我們“大宗期貨交易平臺”的交易端代碼,主要負責交易撮合,SVN最后一個版本的日期是2015年8月7日,可以看到其凈代碼量在15201行。
再來統(tǒng)計一下2015年1月14日的代碼量,7個月時間,代碼已經(jīng)被我優(yōu)化過了數(shù)次,請先不要質(zhì)問我優(yōu)化代碼的能力!(當然,如果你非要質(zhì)問,那么你肯定是個大牛,希望你能給我優(yōu)化的建議。)
看到這個版本更迭,你肯定會說,代碼量將會有不小的差距,然而統(tǒng)計結(jié)果讓我大吃一驚!
代碼量差距竟然只有區(qū)區(qū)的14行,這到底是為什么?我敢向你保證,這兩個版本之間的代碼有天大的不同,然而其體積為什么沒有消腫呢?
反思
再次強調(diào)一下,我們是一個創(chuàng)業(yè)公司,服務端代碼基本上由我來完成,至于我的編碼水平怎么樣,不等你猜測,我的回答肯定是很爛!
那么這個時候,一些真正的大牛也許會對我有所憐惜。當然也許有一些人開始嘖嘖了,說這家伙代碼水平這么爛,也能做一個期貨交易所的交易軟件?
當然,無論你怎么想,我都不會反駁你,因為我把上面的“罪證”貼出來,就是為了來反思這件事,到底在對待代碼體積這件事上,我們能得出什么結(jié)論?
回頭看看吧,統(tǒng)計一下你的項目,代碼已經(jīng)達到了多少行,無論你的項目是阿里巴巴的淘寶系統(tǒng),還是一個計算機小程序,你覺得你的代碼體積你還能忍受得了嗎?
也許你會認為,不是有eclipse這種IDE嗎?它足可以容納我的代碼量,并且能夠幫我進行重構(gòu),等等,先來看看Steve的數(shù)據(jù)。
事實上,我試了好幾個星期都沒能把自己那50萬行代碼導入eclipse,完成索引。一動它就假死,然后再也動不了了。處理2000萬行代碼更是妄想。
好吧,你也許會說,Steve的電腦配置太差,這我肯定不認可,他作為一個技術(shù)界大牛,在亞馬遜和Google呆過的員工,我相信他的電腦配置肯定不會比你的差!
曾經(jīng),我的上司對我這樣說,“交易平臺的代碼,包括交易端、通信端、行情端、web管理端、前置機端,加起來應該不足5萬行,而xxx項目的代碼至少已經(jīng)突破20萬行,你的項目和xxx項目難度不在一個等量級上,所以你不知道xxx項目的難度!!”
好吧,我的項目體積小,是我的錯了!xxx項目是c#寫的,其小組成員達到了10人,而交易平臺也就我一個人,加上客戶端一個人,我們兩個人維護了5萬行的代碼,那xxx項目10個人只能維護20萬行代碼,項目還難產(chǎn)?
好吧,請原諒我的粗俗,我說這話,并沒有什么惡意,我只是想說,代碼量大并不是什么壞事,按照Steve說的,“體積才是代碼的天敵”,那么無論是C#還是Java,在這方面,做的真的不好。如果你的項目體積增長的速度超過了業(yè)務的增長速度,我想,那是非常可怕的一件事情。我們看到了很多軟件公司因為資金鏈短缺而淪陷,但是我相信同樣有很多軟件公司因為不可控的代碼量而沉淪。
你應該也玩過俄羅斯方塊,為了挑戰(zhàn)自己,你并不是從最下面一行開始思考著消除,而是等到累計到只有三四行余白的時候開始動手動腦筋消除,然而這個時候,你存活下來的幾率并不高,很多時候你都在嘆息,差一點就成功了,但事實是你失敗了!那么在軟件開發(fā)這條路上,你也不要一味的等到所有功能都齊全了,再來優(yōu)化代碼,也許到那個時候,你的代碼量將不再可控!
結(jié)語:體積是代碼的天敵!不要認為你控制著成萬上億行的代碼而洋洋得意,覺得那才是真正的牛逼,而是要注意把控那越來越肥的體積!
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
- 上一篇: [转]自用类库整理之SqlHelper和
- 下一篇: HDU 1814 Peaceful Co