以下為譯文: 你的項(xiàng)目截止時(shí)間就要到了,你有一個(gè)緊急的 bug 需要修復(fù),你的項(xiàng)目需要快速迭代輸出產(chǎn)品。 雖然你很忙,但是你也必須考慮你的未來:你現(xiàn)在引入的每一個(gè) bug,都會(huì)給以后修復(fù)帶來巨大的時(shí)間成本。因此我們不應(yīng)該使用過時(shí)的API、過時(shí)的版本依賴、或者一些老舊的做事方法。 所以,我們什么時(shí)候來清理我們的代碼呢?
本文,我將告訴你該在什么時(shí)間去用以下三種方法來清理你的代碼:
解決方法 原型設(shè)計(jì) 在工程構(gòu)建之前,你會(huì)做一些技術(shù)調(diào)研,做一些原型設(shè)計(jì)(或者極限編程中的Spike解決方案),但你不會(huì)長期保留使用這些代碼,你僅僅是使用這些代碼來驗(yàn)證是否能解決問題??紤]到你有可能會(huì)廢棄掉這些代碼,更新和規(guī)范沒有什么需要值得特別注意的事項(xiàng)。如果你也想嘗試?yán)斫鈱W(xué)習(xí)那些已經(jīng)存在的API,你也不需要對代碼進(jìn)行重構(gòu)。 但是,如果你是想通過原型設(shè)計(jì)找到更好的抽象方式,你就必須進(jìn)行大量的重構(gòu)了。 最佳實(shí)踐:
新項(xiàng)目 如果你正在著手搭建一個(gè)全新的項(xiàng)目,你的任何一個(gè)決定都會(huì)給以后帶來很大的維護(hù)成本。 當(dāng)然,這也是一個(gè)機(jī)會(huì),讓你可以使用最新的框架,最佳的解決方案,最好的編程規(guī)范和最好的架構(gòu)。雖然你不一定能做到完美,但是你可以使它盡可能的接近完美。 最佳實(shí)踐:
緊急的bug修復(fù) 在這個(gè)時(shí)候,你需要快速為用戶修改 bug。如果你看到了問題需要解決,但是這個(gè)問題和當(dāng)前需要修復(fù)的bug無關(guān),我建議你暫時(shí)不要?jiǎng)铀?,?bug 修復(fù)結(jié)束了再來處理它。 有些時(shí)候,bugfix 有兩層含義: 一次是快速解決問題,另一次是你需要讓代碼更整潔。 最佳實(shí)踐:
新功能開發(fā)中或者不緊急的bug修復(fù) 當(dāng)你有一個(gè)正常迭代開發(fā)的一個(gè)項(xiàng)目,不管你是在做新功能開發(fā),還是bug修復(fù),這個(gè)時(shí)間是你做代碼清理的最佳時(shí)機(jī)。 在這個(gè)時(shí)候,你并不需要修復(fù)所有你接觸到的代碼,你需要做的是整理你處理中的代碼,并且使你的代碼庫更加的整潔。詳情參考https:///xprog/articles/refactoring-not-on-the-backlog/。 最佳實(shí)踐:
項(xiàng)目維護(hù)階段 當(dāng)你的項(xiàng)目已經(jīng)開發(fā)完成,沒有什么新的開發(fā)任務(wù)的時(shí)候,經(jīng)常幾個(gè)月才有一些給菜單多加一個(gè)選項(xiàng)等這種小的需求修改。 現(xiàn)階段,你的目標(biāo)是做少量的修改,讓項(xiàng)目穩(wěn)定運(yùn)行。重構(gòu)和雜項(xiàng)清理在現(xiàn)階段是不必要的,但是你項(xiàng)目需要你及時(shí)更新一些框架庫的依賴 —— 某些框架庫不在提供服務(wù),或者有安全更新。經(jīng)常更新依賴顯然要比5年才更新一次容易得多。 所以不管你是不是因?yàn)橛衎ug要修復(fù),你都應(yīng)該及時(shí)的去更新你的依賴項(xiàng) —— 理想情況下,長期發(fā)布更新,以減少對API使用的更新需求。 最佳實(shí)踐:
現(xiàn)在與未來的平衡 軟件開發(fā)是一個(gè)持續(xù)的過程,不是做完就沒事了?,F(xiàn)在著手去清理代碼,將會(huì)為你以后節(jié)省時(shí)間,盡管你現(xiàn)在趕項(xiàng)目的截止時(shí)間,現(xiàn)在著手去做也比放在以后多花幾周時(shí)間去做要好。 本文只是做一個(gè)開篇,與任何其它方法一樣,也都有不適用的時(shí)候,所以,你需要根據(jù)你項(xiàng)目中的實(shí)際情況和目標(biāo)來做一些調(diào)整。
|
|
|