一、介面化
多使用依賴注入,減少靜態類的使用。例如工具類的日誌、檔案壓縮、伺服器時間、相機等等,以日誌為例,定義日誌的介面,日誌的實現可能是log4net、Serilog、NLog,也可能是自行實現,定義介面ILog,使用依賴注入獲取單例,後期切換新的日誌實現時,只需要實現日誌介面並注入到IOC容器即可。
二、功能切片。
每個功能相互獨立,但可以透過共享模組的共享服務、訊息釋出訂閱事件、依賴注入等方式相互通訊。例如ModuleA和ModuleB通訊,透過共享模組ShareKernal的ShareService獲取資料,或者透過監聽定義在ShareKernal的訊息釋出訂閱事件進行通訊,或者透過定義在ShareKernal的介面獲取在ModuleB的例項。
三、命名約定。
參考書籍《CLR via C#》,屬性、方法、類名使用大寫駝峰,例如User、Name,public欄位使用小寫駝峰,例如user,name,private欄位使用"_"開頭並小寫駝峰,例如_user,_name,區域性變數使用小寫駝峰;非同步方法以Async結尾,並返回Task物件,例如public Task ReadAsync();方法、屬性、欄位分塊存放,可以使用#region #endregion分塊。
四、使用泛型定義方法或類,確保型別安全並防止值型別裝箱拆箱。
五、詳細的程式碼註釋和除錯日誌。