參考文章:
阮一峰:http://www.ruanyifeng.com/blog/2018/09/complexity.html
軟件復雜性:
- 軟件設計的最大目標,就是降低復雜性。 所謂復雜性,就是任何使得軟件難於理解和修改的因素。
- 復雜性的來源主要有兩個:代碼的含義模糊 和 互相依賴。
- 模糊指的是,代碼里面的重要信息,看不出來。
- 依賴指的是,某個模塊的代碼,不結合其他模塊,就會無法理解。
- 復雜性的危害在於,它會遞增。你做錯了一個決定,導致后面的代碼都基於前面的錯誤實現,整個軟件變得越來越復雜。"我們先把產品做出來,后面再改進",這根本做不到。
如何降低復雜性:
- 降低復雜性的基本方法,就是把復雜性隔離。"如果能把復雜性隔離在一個模塊,不與其他模塊互動,就達到了消除復雜性的目的。"
- 改變軟件設計的時候,修改的代碼越少,軟件的復雜性越低。
- 復雜性盡量封裝在模塊里面,不要暴露出來。如果多個模塊耦合,那就把這些模塊合並成一個。
接口和實現:
- 模塊分成接口和實現。接口要簡單,實現可以復雜。
- 好的設計是,大量的功能隱藏在簡單接口之下,對用戶不可見,用戶感覺不到這是一個復雜的 class。
對用戶減少拋錯:
- 除了那些必須告訴用戶的錯誤,其他錯誤盡量在軟件內部處理掉,不要拋出。
