您是否將重構更改與功能開發/錯誤修復更改混合在一起,還是讓它們保持獨立?大規模重構或可以使用Resharper這樣的工具執行的代碼重新格式化應該與特性工作或錯誤修復分開,因爲很難在修訂之間進行差異並在衆多重構更改中看到代碼的實際更改。這是一個好主意嗎?重構和非重構更改作爲單獨的簽入?
回答
當我記得時,我喜歡在重構後檢查以準備添加功能。通常它會使代碼處於更好的狀態,但不會改變行爲。如果我決定退出該功能,我總是可以保留更好的結構化代碼。
通常,我檢查何時完成了一些工作單元,並且代碼返回到編譯/單元測試爲綠色。這可能包括重構。我會說最好的做法是試圖將它們分開。我發現這很難處理我的工作流程。
保持簡單。
每次檢入對代碼庫應該是一個不同的單一增量更改。
這使得更容易跟蹤更改並理解代碼發生了什麼,特別是當您發現上個月11日某處出現了一個不起眼的錯誤時。試圖在300個文件重構檢查中找到一個單行更改,真的很糟糕。
將SRP應用於您的提交。 Upvoted! – 2010-02-11 11:31:48
我也喜歡這種方法,但直接在與許多開發人員共享的大型代碼庫中工作並且只有一個主線「分支」非源控制時,可能會很困難。例如。您直接在發貨生產構建源分支(沒有其他分支)工作,並且在進入源代碼控制之前,您的整個功能必須由QA完成並接受。我知道,可悲的情況,但最近還有誰遇到過這種源代碼控制配置? – Allbite 2010-08-23 04:01:37
我同意以前的回覆。如有疑問,請將您的更改分成多個提交。如果您不想讓變化歷史記錄混亂很多(並且您的修訂版本顯示爲一個原子更改),請在可以將它們分開的輔助分支中執行這些更改。如果每個變化都清楚易懂,那麼稍後閱讀差異變得容易很多(並且可以放心,沒有什麼是無意中損壞的)。
不要在修改格式的同時更改功能。如果您更改條件的含義以便可以縮進大量代碼,請在一次更改中更改邏輯並在後續更改中執行超時。 明確表示您的提交信息。
如果源代碼控制系統允許它.. (這並不在我目前的工作,由於源代碼控制系統不順心單個用戶檢查出一個單一的文件,以多個地點工作。)
- 我有兩個工作文件夾
- 兩個文件夾都來自同一分支結賬
- 我用一個文件夾來實現新功能的開發/ bug修復改變
- 在我做的重構其他文件夾,
- 每次重構後,我在重構文件夾檢查
- 然後更新,在我的重構合併的新功能開發文件夾
因此,每個重構是在自己的簽入和其他開發人員快速得到重構,所以有更少的合併問題。
- 1. 更改Eclipse的重構工具行爲
- 2. 重構標籤
- 3. 架構更改表重建
- 4. 重構表單
- 5. 簡單的重構
- 6. 重構將NameValueCollection和KeyValueConfigurationCollection作爲參數?
- 7. 重讀UINT64作爲結構
- 8. scrum和重構
- 9. Netbeans和重構
- 10. 代碼重用和重構
- 11. 方法簽名重構
- 12. 301重定向到更改結構
- 13. 更改WordPress網址結構 - 重定向
- 14. 重構字典,更改密鑰類型
- 15. 反映重構更改(Java - > JSP)
- 16. 重定向的REST和構建表單
- 17. 在更改IosGraphics.java後更新和重新構建libGDX
- 18. 更好的重構方法?
- 19. 簡單的重構例如
- 20. 單詞的由來重構
- 21. 二郎:簡單的重構
- 22. 重構爲n層
- 23. Coffeescript重構爲dsl
- 24. 重構和回調
- 25. 志願和重構
- 26. 重構和測試
- 27. 重構和評估
- 28. 重構問題時的MongoDB作爲鍵
- 29. Dict在Python中的解構和重構
- 30. 重構BackgroundWorker的非同步的/等待
並且重構發佈給其他人越快,合併衝突的可能性就越小。 – ctford 2011-06-11 18:23:36