這是很久以前有人給我的建議。不幸的是,我不太記得是誰,所以我無法正確歸因(儘管他們很可能也在某個地方聽到)。但我決定重新分享這件事。
什麼是重構?我確信我們可以找到多種定義。但在現代軟體開發過程中,它通常成為任何不加入、修改或刪除功能的程式碼變更的代名詞。換句話說,這是一部非產品作品。實際上,它常常成為一個模糊的術語,並導致產品利益相關者和開發團隊之間關係緊張。
我們當中誰沒有在狀態會議上聽過這樣的話:「昨天我花了大部分時間圍繞 X 重構程式碼」?我知道我做到了。至少,我可能不只一次說過這樣的話。這是什麼意思?你到底做了什麼?這隱藏在「我重構」一詞背後。 「我做了你無法理解的重要技術工作」是另一種表達方式。
而這正是「重構程式碼」的問題所在。在許多情況下,這意味著做一項非常重要的工作,但這與幾乎偷懶沒有區別,例如無緣無故地重命名變數。
這就是我所說的「不要重構程式碼」的意思:在談論你所做的、正在做的或計劃做的事情時使用不同的字詞。不要“重構”。相反,嘗試這些:
我讓程式碼效能更高(辨識了N+1,發現處理大量資料效率低)
我使程式碼更加開放以進行更改(主要應該透過預測我們現在將更頻繁地更改此區域來證明是合理的)
我使程式碼更具防禦性(如果使用不正確的參數執行,則會提前失敗並發出明確的訊息 - 因為其他團隊錯誤地使用它並導致微妙的錯誤)
我加入了針對未經測試區域的測試(好的理由:因為它最近失敗了幾次;壞的理由:增加我們的任意程式碼覆蓋率指標)
我加入了更多的日誌記錄/儀器(這樣我們可以更好地了解正在發生的事情)
我更改程式碼以滿足我們新的樣式指南(因為我們會經常更改它)
這樣的溝通不僅可以讓其他人更容易理解更改的內容,還可以幫助您確定您計劃進行的更改是否真的會產生影響。無法隱藏在「重構」術語後面也有助於使變更更加集中,並且更容易為同事審查。