摘要:接口級行為不變,內部行為盡量不變,類結構盡量不變為代碼模式和場景確立一組明確的前提條件,重構必須滿足前提條件才能進行。但是大規模難以完美做到這三點。因此自動重構是革命性的技術。
另載于 http://www.qingjingjie.com/blogs/7
最后再啰嗦一篇吧,分享些宏觀經驗,供需要做類似事情的人參考。
技術示例在前篇! 伸手黨繞行!
大規模系統重構,不可避免要觸到各個團隊/模塊的很多代碼,很可能破壞功能,到時候你就成眾矢之的了,tickets撲面而來,到處滅火。
怎么確保不破壞功能呢?就要做安全重構。(2016/4/16做了補充,以方括號[]標出)
充分了解系統架構,調查各種代碼模式和場景(爭取發現corner case),手工重構幾個試試。
[然后把手工過程給自動化]
盡量做等價變換,把代碼改成等價形式,一般都是安全的。(注意:涉及反射的代碼無法等價變換。)
[改變類結構,對非反射代碼是等價的,對反射代碼是不等價的]
絕不能改變代碼語義(重構本來就不該改變語義)。
[接口級行為不變,內部行為盡量不變,類結構盡量不變]
為代碼模式和場景確立一組明確的前提條件,重構必須滿足前提條件才能進行。
[分類處理,列出計劃再行動]
如果完美做到以上三點,新代碼基本上是不需要測試的(抽樣測試即可),否則要做針對性的測試。但是大規模難以完美做到這三點。
[TraceSonar輔助確立測試范圍 https://github.com/sorra/TraceSonar]
簡單重構只需要語法分析,復雜重構可能需要語義分析。該做的工作要做足,別出簍子。
[實踐發現Most Valuable Product只夠用來demo]
難以自動判斷的場景,可以作標記(例如在該位置造成編譯錯誤或插入注釋)。自動重構結束后,找到標記(例如編譯一遍),然后人工處理。
[注釋無法直接插入,如果你想知道解決辦法,請評論]
盡可能自動化。一來節約人力,二來機械重復的人工操作極易出錯,而機器是不會犯錯的。因此自動重構是革命性的技術。
[還可以自動生成改動列表, 相關文檔, etc.]
補充:如果資源允許,當然要做好測試。
是不是寫得太抽象?大家給點反饋。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65297.html
摘要:記住,帶有嚴格測試的代碼可能比沒有測試的代碼更有害。保持簡單,極度簡單不要編寫復雜的代碼。并且它將是全球代碼文檔的良好開端。使用這樣的迭代來部署質量更新,而不是腰部時間和資源對不合理的愿望和犧牲與質量。 原文地址:https://hackernoon.com/few-si... showImg(https://segmentfault.com/img/bVJdkG?w=1000&h=2...
摘要:記住,帶有嚴格測試的代碼可能比沒有測試的代碼更有害。保持簡單,極度簡單不要編寫復雜的代碼。并且它將是全球代碼文檔的良好開端。使用這樣的迭代來部署質量更新,而不是腰部時間和資源對不合理的愿望和犧牲與質量。 原文地址:https://hackernoon.com/few-si... showImg(https://segmentfault.com/img/bVJdkG?w=1000&h=2...
摘要:記住,帶有嚴格測試的代碼可能比沒有測試的代碼更有害。保持簡單,極度簡單不要編寫復雜的代碼。并且它將是全球代碼文檔的良好開端。使用這樣的迭代來部署質量更新,而不是腰部時間和資源對不合理的愿望和犧牲與質量。 原文地址:https://hackernoon.com/few-si... showImg(https://segmentfault.com/img/bVJdkG?w=1000&h=2...
摘要:記住,帶有嚴格測試的代碼可能比沒有測試的代碼更有害。保持簡單,極度簡單不要編寫復雜的代碼。并且它將是全球代碼文檔的良好開端。使用這樣的迭代來部署質量更新,而不是腰部時間和資源對不合理的愿望和犧牲與質量。 原文地址:https://hackernoon.com/few-si... showImg(https://segmentfault.com/img/bVJdkG?w=1000&h=2...
摘要:架構團隊的人是不是很輕松,業務團隊天天加班搞項目,架構團隊貌似都是在喝茶聊天研究一些不實用的東西。架構團隊的架構師最好是在業務團隊深耕過,知道痛點所在的,這樣研發出來的系統和工具能夠和公司目前的項目所匹配發揮最大的作用,讓大家愛不釋手。 最近幾年寫博客確實寫得少了,初出茅廬的時候什么都愿意去寫,現在寫一點東西之前會反復斟酌是否有價值。工作十幾年了,做了N多個互聯網系統,業務涉及教育、游...
閱讀 3711·2023-04-25 22:43
閱讀 3707·2021-09-06 15:15
閱讀 1332·2019-08-30 15:54
閱讀 3543·2019-08-30 14:20
閱讀 2884·2019-08-29 17:16
閱讀 3117·2019-08-29 15:28
閱讀 3397·2019-08-29 11:08
閱讀 1071·2019-08-28 18:05