日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

代码重构的实战经验和那些坑

發布時間:2025/4/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 代码重构的实战经验和那些坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2012年冬,我在一家創業公司的小團隊里搞軟件開發。彼時我們有一位真實的企業客戶,且軟件的第一版也已發布。開發按進度完工,在發布時我欣喜若狂,也非常驕傲,看著系統服務于每天幾百萬的獨立用戶,并發送出數千萬條短信真是太令人滿意了。到了第二年夏天,公司拿到了真實收入,我的職位變成了開發主管,公司又招了些新人,正待蓬勃發展,一切都很美好。然后我們做了一個巨大的決策失誤:決定重寫軟件——從頭開始。

為什么我們覺得有必要從頭重寫軟件呢?

在第一次編寫系統代碼時,我們的時間表十分緊迫,必須與時間賽跑,在計劃時間內趕完進度。因此無論是設計討論,還是審查會議都沒花太長時間——我們沒有時間浪費在這上面——只能匆匆完成一個功能、快速測試,然后趕著去做下一個。我們與別的公司共享辦公空間,我還記得其他公司的軟件開發都會花很長時間做設計、討論架構,再花上數周討論設計模型。

除了設計倉促,原本的系統寫得不差,總體來說架構也不錯。其中有些意大利面條式的代碼,是公司之前做概念驗證時留下的,因為這些代碼能用,再加上工期緊張,當時我們沒有去碰。但后來我們不考慮執行優化改進,卻決定要從頭重寫代碼的原因在于:

老舊代碼很糟糕,很難維護;
“單一整體式的java架構”對我們的未來發展不利,無法支持有6千萬移動用戶以及多站點部署的大型運行商;
我想要嘗試炫酷的新技術,比如Apache Cassandra、虛擬化技術、二進制協議、SOA等等。
結果很不幸:我們說服了全公司以及董事會,實現了愿望。

代碼重寫之旅

正式的開發時間是從2012年春天開始的,我們將2013年1月末設定為發布時間。由于計劃太過龐大,我們需要更多的人,于是在印度聘請了顧問與幾個遠程開發者。但是,我們沒有充分預期到維護原本系統、進行新的開發工作與理解客戶需求這些并行起來的工作量。

還記得我在文章最開始說過,我們有一個真實客戶么?這位客戶是南美最大的移動運營商之一。在我們開發的系統投入使用后,他們開始對變更和新功能提出要求,因此我們只能繼續更新原來的系統。但是,由于這個系統將會被廢棄,在更新時我們總有些敷衍了事,盡可能找借口拒絕了客戶許多的新功能需求。結果導致了工期拖延,沒能在原定的deadline完成進度。事實上,我們的進度拖延了整整8個月。

不過我們還是先說說結果吧:當項目終于完工時,新系統看起來非常棒,滿足所有需求。我們做了負載測試,結果顯示新系統能很容易地支持超過1億的用戶,配置集中,查看圖表的UI工具也很美觀,是時候廢棄舊系統,改換新系統了……

但是客戶拒絕了升級的請求:原本的系統已經獲得了廣泛應用,他們的用戶已經開始依賴舊系統了,他們完全不想冒風險。長話短說,浪費了幾個月之后我們收效甚微。該項目正式宣告失敗。

何時需要重寫代碼

Joel Spolsky強烈反對重寫代碼,他建議大家都不要這樣做。不過我不是特別認同:有時候逐步優化與重構非常困難,唯一讀懂代碼的方式就是重寫。此外軟件開發人員喜歡編寫代碼,創造新東西——閱讀別人寫的代碼,嘗試理解他們的代碼與“思維抽象”會很無聊。不過,優秀的程序員也是優秀的維護者。

如果你想要重寫代碼,一定要出于正確的理由,并有著合適的計劃。比如:

有時候在發布新版很久之后,老舊代碼仍需維護,維護兩個版本的代碼需要耗費大量工作,在開始重寫前請根據項目規模評估所需的時間與資源。

想想其他失去的機會,并比較任務的優先級。

重寫大型系統比小型系統風險更高,考慮一下能否逐步重寫。我們同時執行了以下幾項工作:切換到新的數據庫、使用“SOA”架構、更換為二進制協議,其實本可以逐步執行這些更換。

考慮開發者的偏見。在開發者想要學習新技術或新語言的時候,他們會想要使用這些來重寫某些代碼。不過我不反對這樣做,這也是良好環境與文化的標志,但應當將它與風險和機遇做比較。

Michael Meadows對何時有需要進行“大型”重寫有著很好的看法:

技術上

組件的耦合度很高,無法單獨對某個組件進行修改。重新設計單個組件會導致一連串的變化,不僅會影響到相鄰的組件,甚至間接影響到所有的組件。
?
技術堆棧太過復雜,未來狀態設計需要變更很多的基礎架構。出于這個原因執行完全重寫十分必要,逐步重新設計在這種情況下沒有優勢。
?
重新設計單個組件無論如何都會導致對該組件的重寫,在現有設計中沒有可以插入新功能的地方。這種情況下逐步重新設計沒有優勢。
?
政策上
?
贊助商無法理解逐步重新設計需要對項目進行長期投入。不可避免的是:大多數公司對于在逐步重新設計上繼續耗費預算沒有興趣。在完全重寫代碼時,這種現象也很難避免,但贊助商更愿意繼續投入,因為他們不想用著半成品的新系統與部分過時的舊系統。
?
系統用戶更習慣使用“原本的界面”:在這種情況下,政策上不會允許修改系統的重要部分(前端)。但如果完全從頭開始重寫,則會繞過這個問題。用戶還會堅持使用“相同的界面”,但這次你反擊的理由更為充足。要記得:逐步重新設計的總成本總是要高于完整重寫代碼,但一般來說對企業的影響更小一些。在我看來,如果重寫理由充足,公司又有超級優秀的開發者,那么就開工吧。
?
放棄正在開發的項目很危險:浪費大量的時間和金錢重復實現已有功能,同時還會放棄實現新功能的機會,有可能激怒客戶并導致工作計劃推遲。如果你正在重寫代碼,那是你的權力,不過請確保這么做的理由正確,同時了解風險也做了相關計劃。(來源:孫薇)

轉載于:https://www.cnblogs.com/chengzikelo/p/5498080.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的代码重构的实战经验和那些坑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av中文在线资源 | 亚洲不卡在线 | 一级黄色av| 成人动漫中文字幕 | 精品欧美在线观看 | 四虎成人精品永久免费av | 亚洲欧美日韩视频一区 | 国产刺激高潮av | 久久亚洲天堂网 | 欧美天天 | 美女操出白浆 | 男人猛进女人爽的大叫 | 97超碰碰 | 青青草免费在线观看视频 | 欧美日韩国产成人精品 | 亚洲精品国产无码 | 欧美成人精品一区二区综合免费 | 亚洲成人动漫在线观看 | 强行侵犯视频在线观看 | 波多野结衣伦理 | 欧美日本三级 | 日本免费黄视频 | 久久久久亚洲av成人无码电影 | 国产女主播喷水视频在线观看 | 欧美一级免费在线观看 | 日韩av网站大全 | 久射久| 日本少妇做爰全过程毛片 | 欧美自拍一区 | 中文字幕亚洲乱码熟女1区2区 | 欧美狠狠操| 亚洲国产成人在线 | 欧美激情第三页 | 亚洲一区精品视频在线观看 | 亚洲国产精品成人久久蜜臀 | 激情一级片 | 久久精品视频一区二区三区 | 国产精品有码 | 性久久久久久久久久 | 99精品视频一区二区 | 亚洲欧美日韩中文字幕在线观看 | 欧美一区二区免费视频 | 国产精品vip | 国产黄色大片免费看 | 女女高潮h冰块play失禁百合 | 粉嫩av.com| 国产一区二区视频播放 | 在线免费看91 | 亚洲拍拍 | 色就色综合 | 爽插 | 日韩成人动漫在线观看 | 亚洲无av在线中文字幕 | 91精品国产91久久久 | 男人爱看的网站 | 在线免费观看a级片 | 国产做受视频 | 日韩欧美一区二 | 日本wwwxxx | 伊人久久成人网 | 国产一区视频在线观看免费 | 日本成人a | 看av免费毛片手机播放 | 免费看污片网站 | 黄a免费网络 | 日韩免费高清视频网站 | 欧美精品日韩少妇 | 久久性感美女视频 | 91视频免费看片 | 黄页网站在线播放 | 亚洲高清视频在线观看 | 韩国三级与黑人 | 青春草视频在线免费观看 | 欧美日韩在线不卡 | av免费影院 | 日韩高清一级片 | hd丰满圆润的女人hd | 中文字幕日本视频 | 亚洲成年人影院 | 日本一道本在线 | 日日操夜夜 | 免费看污片网站 | 亚洲精品~无码抽插 | 欧美乱妇狂野欧美在线视频 | 亚洲最大的黄色网 | 成人日皮视频 | 精品无码久久久久久久 | 婷婷激情小说网 | 免费人成在线观看网站 | 我看黄色一级片 | 精品国产免费观看 | av黄色网址 | 香蕉视频成人在线观看 | 91久久精品美女高潮 | 国产美女久久 | 成人精品免费视频 | 日韩av一区在线播放 | 丰满少妇久久久久久久 | 亚洲精品无码一区二区 |