第 22 章 結論
本書只討論一件事:複雜性。應對複雜性是軟體設計中最重要的挑戰。複雜性讓系統難以構建和維護,也常常使系統執行緩慢。在本書中,我試著說明了導致複雜性的根本原因,例如依賴性和模糊性;討論了幫助你識別不必要複雜性的危險訊號,例如資訊洩露、不必要的錯誤情況或過於籠統的名稱;提出了一些建立更簡單軟體系統的通用思路,例如努力設計深而通用的類、透過定義來規避錯誤,以及將介面文件與實作文件分開。最後,我討論了做出簡單設計所需的投資思維。
本章概覽全書只討論一件事,是什麼?
這些建議的代價是,專案早期需要投入額外的工作。此外,如果你還不習慣思考設計問題,在學習良好設計技巧的過程中,進度會更慢一些。如果你唯一關心的是讓當前程式碼儘快正常工作,那麼思考設計就會顯得像一件苦差事,似乎妨礙了你達成真正的目標。
另一方面,如果良好設計是你的重要目標,本書中的思想應該會讓程式設計更有趣。設計是一個令人著迷的謎題:如何用盡可能簡單的結構解決特定問題?探索不同方法很有趣,找到既簡單又強大的解決方案也令人愉快。整潔、簡單、易理解的設計本身就是美的。
此外,對良好設計的投入很快就會得到回報。專案開始時精心定義的模組,會在後續反覆使用時為你節省時間。六個月前寫下的清晰文件,會在你重讀程式碼、新增新功能時節省時間。磨練設計技能所花的時間也會得到回報:隨著技能提升和經驗積累,你會發現自己能越來越快地做出好的設計。一旦掌握方法,好的設計其實並不比快速而草率的設計多花多少時間。
成為優秀設計師的回報是,你可以把更大比例的時間用在有趣的設計階段。糟糕的設計師則把大部分時間花在複雜而脆弱的程式碼中追查缺陷。提高設計技能後,你不僅能更快地開發出更高品質的軟體,也能更享受軟體開發的過程。