第(2/3)頁(yè) 他說(shuō)著有打開(kāi)了另外一段日志寶的代碼說(shuō)道:“你看我這段,我的這段嵌套分支也很多,但是這都不是一次寫(xiě)出來(lái)的,而是每次增加新功能時(shí)就開(kāi)個(gè)新的分支。” “對(duì)于每一個(gè)分支的增加,我都不覺(jué)得需要重構(gòu)整段代碼,因?yàn)槲耶?dāng)時(shí)只想用最快的時(shí)間,把自己要做的事情做完,于是代碼質(zhì)量變得越來(lái)越低?!? “昨天晚上,我就把這段代碼進(jìn)行了重構(gòu),將三百二十行,變成了一百行,這樣就不擔(dān)心啟明星的工程師們看暈頭了,也節(jié)省了大量的資源。” 汪永豐看著兩段代碼,點(diǎn)了點(diǎn)頭說(shuō)道:“區(qū)別真的很大,但是功能相同。那應(yīng)該怎么重構(gòu)代碼呢?” 柳誠(chéng)接過(guò)了柳依諾遞過(guò)來(lái)的水杯,說(shuō)道:“一般情況下,三個(gè)分支就可以重構(gòu)為一個(gè)判斷,如果一個(gè)判斷的分支大于10個(gè),就要考慮寫(xiě)成表去驅(qū)動(dòng),專(zhuān)門(mén)寫(xiě)一個(gè)函數(shù)根據(jù)配置寫(xiě)一個(gè)路線圖。” “如果是映射邏輯復(fù)雜,使用頻率較高,就專(zhuān)門(mén)寫(xiě)一個(gè)數(shù)據(jù)庫(kù)規(guī)則引擎來(lái)調(diào)用。” 汪永豐還是有點(diǎn)懵,柳誠(chéng)又親自演示了一遍,有些猶豫的說(shuō)道:“就是類(lèi)似這種,重構(gòu)代碼是個(gè)費(fèi)力不討好的活兒,但是也是一個(gè)必做的工作。” “好厲害!”汪永豐眨著眼睛,目瞪口呆的說(shuō)道。 柳誠(chéng)示意這沒(méi)什么,笑著說(shuō)道:“大部分都是這樣,我曾經(jīng)接手過(guò)一個(gè)三十幾層的ifelse套ifelse模塊,把我差點(diǎn)干崩潰?!? “我對(duì)這個(gè)模塊,做評(píng)審復(fù)盤(pán)的時(shí)候,發(fā)現(xiàn)第一個(gè)程序員,只寫(xiě)了一層,后來(lái)每增加一個(gè)需求,邏輯分支擴(kuò)張到了三十多層,就沒(méi)人愿意重構(gòu)了?!? “重構(gòu)錯(cuò)了,還得背鍋?!? “我那時(shí)候就勸自己,編程嘛,最重要的就是看得開(kāi),我加了一層,測(cè)試,提交,下班?!? 汪永豐十分好奇的問(wèn)道:“后來(lái)呢?” 柳誠(chéng)滿(mǎn)是回憶的說(shuō)道:“后來(lái)這個(gè)模塊,在啟動(dòng)的時(shí)候,會(huì)被執(zhí)行19.6億次,開(kāi)啟這個(gè)模塊的時(shí)間長(zhǎng)達(dá)六分鐘,而且所有人都不知道問(wèn)題出在哪里?!? “19.6億次?”汪永豐拍了拍額頭。 柳誠(chéng)站起身來(lái),笑著說(shuō)道:“是一個(gè)游戲在線服務(wù)的子模塊,你知道,19.6億次的無(wú)用運(yùn)算,一遍又一遍的在用戶(hù)的CPU上上演,那場(chǎng)面,嘖嘖?!? “后來(lái)呢?”汪永豐瞪著眼睛,問(wèn)道。 柳誠(chéng)笑瞇瞇的說(shuō)道:“后來(lái)呀,我偷偷的改了呀,還能咋樣,要是被公司發(fā)現(xiàn),我豈不是要被炒魷魚(yú)?” 人生的路上,有很多的經(jīng)驗(yàn),都很一個(gè)坎坷一個(gè)坎坷,跨過(guò)去之后,才恍然大悟,當(dāng)初就不該犯這樣的錯(cuò)誤。 自那以后,柳誠(chéng)過(guò)手的大大小小的模塊,都會(huì)用當(dāng)初師父交待的方法,進(jìn)行一遍遍的重構(gòu),背鍋不可怕,發(fā)生不可挽回的錯(cuò)誤才是最可怕的。 “柳工,你這么厲害,還有功夫談戀愛(ài)啊?!蓖粲镭S十分苦惱的說(shuō)道:“我學(xué)都學(xué)不過(guò)來(lái),每天所有的時(shí)間都用完了,還是不夠用?!? 柳誠(chéng)站起身來(lái),笑瞇瞇的說(shuō)道:“誰(shuí)讓我天賦異稟?!? “對(duì)了,你現(xiàn)在不要過(guò)分追求什么代碼精簡(jiǎn)、簡(jiǎn)潔,而是踏踏實(shí)實(shí)的做完項(xiàng)目,一個(gè)程序員不要操著CTO的心。” “在規(guī)定的時(shí)間內(nèi),把規(guī)范的事做好,等到你自己帶項(xiàng)目的時(shí)候,再考慮這些?!? 汪永豐用力的點(diǎn)了點(diǎn)頭說(shuō)道:“知道了。” 第(2/3)頁(yè)