中大型企業(yè)都會(huì)有代碼重構(gòu)的需求。
技術(shù)類引起的重構(gòu)。在實(shí)際的開發(fā)過程中,我們沒辦法過深的考慮問題,更不可能面面俱到,不得不承認(rèn),大部分的走業(yè)務(wù)線的公司,前期的項(xiàng)目基本是外包的,因?yàn)橥獍馁M(fèi)用要比養(yǎng)技術(shù)人員低很多,當(dāng)然是個(gè)人外包,就是公司的老板或公司的同事,認(rèn)識(shí)個(gè)程序員,或讓朋友介紹個(gè)程序員,讓他來把項(xiàng)目接過去,他可能再轉(zhuǎn)一手,這么做出來的項(xiàng)目,我之前的公司就是這么做的,綜合下來,這樣能更省錢。當(dāng)然公司的主營(yíng)業(yè)務(wù)不能是技術(shù)線,網(wǎng)站或系統(tǒng)只是打輔助,這是前提。走技術(shù)線的科技類公司最好找個(gè)技術(shù)合伙人,以技術(shù)為主,話語權(quán)很重要,否則中后期無窮無盡的麻煩。外包,意味著代碼質(zhì)量沒法很好的監(jiān)控,只要功能實(shí)現(xiàn)了,其它就無所謂了,而這樣導(dǎo)致的結(jié)果,后期要想把代碼接管過來,重新招人的話項(xiàng)目幾乎沒法去維護(hù),有的時(shí)候,公司在融資后,往往會(huì)把這個(gè)外包的程序員接引公司來,讓他負(fù)責(zé)整個(gè)項(xiàng)目的研發(fā)。
產(chǎn)品業(yè)務(wù)引起的重構(gòu)。不是所有的產(chǎn)品團(tuán)隊(duì)都能很好的把握需求,更不要指望他們能有這種水平,公司里產(chǎn)品改需求真是太常見了,當(dāng)然這并不全是產(chǎn)品的鍋,這其中就有相當(dāng)一部分來自老板和客戶的需求變更,具體原因可以參考我的這篇文章《產(chǎn)品經(jīng)理的興起,給開發(fā)帶來的革命是整個(gè)行業(yè)的進(jìn)步還是倒退?
什么時(shí)候應(yīng)該重構(gòu)。比較理想的情況,是伴隨著你的整個(gè)項(xiàng)目的生命周期,不斷新的需求出來,加進(jìn)新的功能,同時(shí)個(gè)人技術(shù)不斷的進(jìn)步,對(duì)碼進(jìn)行必要的重構(gòu),會(huì)為后面維護(hù)帶來相當(dāng)大的便利,但,這僅僅是理想情況。實(shí)際情況中我們遇到的可能來自于公司層面的項(xiàng)目加急通知,項(xiàng)目的時(shí)間被大大壓縮,你很可能一直要么在寫新功能的路上,要么在改新需求的路上。重構(gòu),不產(chǎn)生新功能,資本不認(rèn)可的,那不是他們關(guān)心的問題,即便重構(gòu)工作可能會(huì)大大地降低整個(gè)公司的后期維護(hù)和開發(fā)成本,當(dāng)然不重構(gòu),這些鍋還是開發(fā)來背,這就是技術(shù)有話語權(quán)的重要性。所以,互聯(lián)網(wǎng)公司還有另一種做法,寫的功能和代碼,只要能用就行,一來沒時(shí)間,二來重構(gòu)的工作量不僅僅是開發(fā),還有測(cè)試,還有各種隱藏的bug,尤其前人留下來的“不可觀望太久”的代碼,都是麻煩。