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