一、可維護性
高內聚、低耦合
高內聚,是針對一個組件(類)內部而言,如果一個組件幹了好幾件不相關的事情,那麼組件內部就比較散,出問題是遲早的事情。中原大戰之後,蔣介石表面上統一了各個軍閥,實際上,他們內部之間不夠內聚,一盤散沙。
低耦合,是針對多個組件之間的關係。老死不相往來,是理想國,也就沒有什麼矛盾,但這是不可能的。所以,儘量減少類之間的依賴。
Soc
關注分離點,我們經常說mvc模式是關注分離點的。什麼意思呢?可以把mvc看成三個大的組件,每個組件都幹自己的事情,model專注業務邏輯、view專注頁面展示、controller專注控制,把適當的model推給適當的view
二、面向對象設計
面向接口編程
利於擴展
組合優於繼承
無論是組合還是繼承,都是可以擴展對象的功能。從耦合性上來講,組合當然優於繼承。適配器模式(包裝器模式)有兩種實現方式
隔離可能改變的部分
把經常變化的部分以抽象的方式隔離起來
SOLID原則
1、單一責任原則 (SRP)
2、開放/封閉原則(OCP)
3、里氏替換原則(LSP)
4、接口分離原則(ISP)
5、依賴反轉原則(DIP)
KISS (keep it simple,stupid)
DRY (don't repeat yourself)
三、設計模式
需求和重構
按照oo原則來設計,結果並不一定是某種設計模式,但是可能非常接近某種模式,這時候,可以考慮是否使用模式
四、編寫優質軟件
可測試性
虛擬對象(虛擬化框架)
仿冒對象
可擴展性
基於接口的設計
插件架構(好的框架都是具有插件的架構,如Asp.net,可通過配置文件註冊響應模塊和處理器)
可讀性
1、註釋(包括命名)
2、清晰(代碼結構)
3、短的更好
4、一致性