重要知識點(diǎn)
如果發(fā)下自己需要為程序添加一個(gè)特性,而代碼結(jié)構(gòu)使你無法很方便地達(dá)成目的擂橘,那就先重構(gòu)那個(gè)程序晌区,使特性的添加比較容易進(jìn)行然后再添加特性。
重構(gòu)前先檢查自己是否有一套可靠的測試機(jī)制通贞,這些測試必須有自我檢驗(yàn)的能力朗若。
重構(gòu)技術(shù)就是以微小的步伐修改程序,如果你犯下錯(cuò)誤昌罩,很容易便可發(fā)現(xiàn)它哭懈。
任何一個(gè)傻瓜都能寫出計(jì)算機(jī)可以理解的代碼,惟有寫出人類容易理解的代碼茎用,才是優(yōu)秀的程序員遣总。
重構(gòu)(名詞):對軟件內(nèi)部結(jié)構(gòu)的一種調(diào)整睬罗,目的是在不改變軟件可觀察行為的前提下,提交其可禮節(jié)性旭斥,降低其修改成本容达。
重構(gòu)(動(dòng)詞):使用一系列重構(gòu)手法,在不改變軟件可觀察行為的前提下琉预,調(diào)整其結(jié)構(gòu)董饰。
事不過三,三則重構(gòu)
不要過早發(fā)布接口圆米,請修改你的代碼所有權(quán)政策,使重構(gòu)更順暢
不要因?yàn)闇y試無法捕捉所有bug就不寫測試啄栓,因?yàn)闇y試的確可以捕捉大多數(shù)bug娄帖。
當(dāng)事情唄大家認(rèn)為應(yīng)該會(huì)出錯(cuò)時(shí),別忘了檢查是否跑出了預(yù)期的異常昙楚。
考慮可能出錯(cuò)的邊界條件近速,把測試火力集中在那兒。
編寫未完美的測試并運(yùn)行堪旧,好過對完美測試的無盡等待(編寫測試在于行動(dòng))削葱。
每當(dāng)你收到bug報(bào)告,請先寫一個(gè)單元測試來暴露這只bug淳梦。
頻繁地進(jìn)行測試析砸,每次編譯請把測試也都考慮進(jìn)去,內(nèi)天至少執(zhí)行每個(gè)測試一次爆袍。
一套測試就是一個(gè)強(qiáng)大的bug偵測器首繁,能夠大大縮減查找bug所需要的時(shí)間。
確保所有測試都是完全自動(dòng)化陨囊,讓它們檢查自己的測試結(jié)果弦疮。
當(dāng)你感覺需要撰寫注釋時(shí),先嘗試重構(gòu)蜘醋,試著讓所有注釋都變得多余胁塞。