鮑勃大爺調查提問:兩者哪個更昂貴?A.在程式碼中新增難以更改的功能。B.保持程式碼足夠靈活性以輕鬆新增新功能。
眾說紛紜:
靈活性可能導致更多的設計時間和複雜性。這個詞本身看起來不錯,但沒那麼簡單。
我現在正在(艱難地)學習到,隨著複雜性的增加,維持軟體專案中的變化速率變得越來越困難。如果我可以回去一年,我肯定會在設計更多SOLID方面投入更多的前期精力。
我認為靈活性更昂貴。理由:靈活性通常會導致過度抽象,從而過度滲透到測試中。另外,使用者可能會注意到效能降低。我寧願在舊程式碼上使用TDD,並且僅在測試告訴我需要時才引入靈活性。
我記得歷史老師說,在宗教法庭上,可怕的事情是以上帝的名義完成的。我已經看到以OO的名義做的可怕的事情。
我選擇A,但我認為B也取決於開發人員/工程師的技能。
這個問題缺乏背景。也許程式碼很簡單,但是很難更改。然後將其丟棄並使用新功能再次編寫將更便宜。只要具有有意義的測試更改就很便宜。
最好的方法是:“保持程式碼“簡單”到足以輕鬆新增新功能。” 另外:“保持足夠的迴歸測試以無畏地新增新功能。” 簡單性和迴歸測試取代了為未知的未來提供靈活性的需求。
有人說靈活性會導致過度投入和過度抽象,但這將意味著程式碼難以維護。因此,我選擇A,因為靈活的程式碼必須良好且易於維護。
取決於您如何量化技術債務成本
取決於您對“難以改變”的含義以及為何難以改變。
這就像複利-取決於變化率。最初,義大利麵條程式碼的成本較低。隨著時間的流逝,變化的速度增加-作為人類,我們希望在更短的時間內得到更多。這時靈活性變得更便宜,而義大利麵條式程式碼開始削弱企業。
相關文章
- C# 程式碼中呼叫 Javascript 程式碼段以提高應用程式的配置靈活性(使用 Javascript .NET 與 Jint)C#JavaScript
- 鮑勃大爺:SOLID概念解釋Solid
- 掌握C語言指標,輕鬆解鎖程式碼高效性與靈活性(中)C語言指標
- 鮑勃大爺:為何選擇Clojure?
- 程式碼歷史上最昂貴的 7 個錯誤
- 鮑勃大爺:單元測試中單元是多小?
- 輕鬆導航:教你在Excel中新增超連結功能Excel
- pdf程式碼新增水印
- 兩行程式碼輕鬆讓 Java 實現大文字平行計算行程Java
- 程式碼分享:體現js靈活性的def.jsJS
- 輕鬆連線 ChatGPT實現程式碼審查ChatGPT
- 程式碼大全中保持鬆散耦合的demo
- 如何通過程式碼庫的抽象分支以增量方式進行大規模更改 - Paul抽象
- 思考:如何寫出讓同事難以維護的程式碼?doge
- 填報表中如何新增 html 程式碼HTML
- Google 現在可以更輕鬆地檢查你的密碼是否洩露Go密碼
- 短影片app原始碼應以多元化的特色功能來滿足使用者APP原始碼
- ECMASCRIPT 2021新功能程式碼演示案例
- 調程式碼爺爺大部分輩程式碼需要的東西VBC6.EXE 你還是個細胞,他誕生了
- 尋找寫程式碼感覺(十四)之 新增功能的開發
- 輕鬆整合系列一:如何向 KubeBlocks 新增新的資料庫型別?以 Oracle MySQL 為例BloC資料庫型別OracleMySql
- Authing新功能——小程式掃碼登入
- 新增多個使用者的shell指令碼指令碼
- 【譯】在除錯時輕鬆導航程式碼委託除錯
- 在Docker中安裝PostgreSQL的ODBC驅動並新增Python測試程式碼DockerSQLPython
- 在Docker中安裝GaussDB的ODBC驅動並新增Python測試程式碼DockerPython
- ChatGPT:讓程式開發更輕鬆ChatGPT
- CodeMixer完美替代ChaosTool ,iOS新增垃圾程式碼工具,程式碼混淆工具,程式碼生成器,史上最好用的垃圾程式碼新增工具,自己開發的小工具...iOS
- JavaScript新增class樣式類程式碼JavaScript
- JavaScript 程式碼開頭新增分號JavaScript
- Java 18 新增@snipppet標籤,註釋中寫樣例程式碼更舒適了!Java
- ORACLE 12.2中的更改與新功能Oracle
- 鮑勃大爺:將if/else中每個條件變為邏輯並列互拆而不依賴執行順序。
- Java 繼承與多型:程式碼重用與靈活性的巧妙結合Java繼承多型
- 輕鬆使用WebWorker,解放耗時較大的演算法程式碼Web演算法
- CCMixer/CodeMixer工具,完美替代ChaosTool,iOS新增垃圾程式碼工具,程式碼混淆工具,程式碼生成器,史上最好用的垃圾程式碼新增工具,自己開發的小工具iOS
- 怎樣在Excel中新增水印?學會這個方法可以輕鬆搞定Excel
- 鮑勃大叔:程式設計正規化並不排斥!程式設計