1. 高品質的代碼 1.1. 性能(Performance) 1.1.1. 只執行需要的操作,而且執行迅速 1.1.2. 不會使系統陷入停頓 1.2. 可用性(Availability) 1.2.1. 持續在所需的性能水平上保持可用 1.2.2. Topic1 1.3. 安全性(Security) ...
1. 高品質的代碼
1.1. 性能(Performance)
-
1.1.1. 只執行需要的操作,而且執行迅速
-
1.1.2. 不會使系統陷入停頓
1.2. 可用性(Availability)
-
1.2.1. 持續在所需的性能水平上保持可用
-
1.2.2. Topic1
1.3. 安全性(Security)
-
1.3.1. 正確驗證輸入
-
1.3.2. 防止無效的數據格式或超範圍的無效數據
-
1.3.3. 防止惡意攻擊代碼
-
1.3.4. 身份驗證
-
1.3.5. 鑒權操作
-
1.3.6. 具備容錯性
1.4. 可伸縮性(Scalability)
- 1.4.1. 安全地處理指數級增長的用戶數目,而不會令系統停頓
1.5. 可維護性(Maintainability)
-
1.5.1. 修複缺陷並添加新功能的難易程度
-
1.5.2. 低耦合高內聚
1.6. 可訪問性(Accessibility)
-
1.6.1. 能力受限的成員也能夠根據自己的需要輕鬆地修改和使用軟體
-
1.6.2. 高對比度的用戶界面
-
1.6.3. 針對閱讀困難者和盲人添加的旁白
1.7. 可部署性(Deployability)
-
1.7.1. 針對軟體的用戶
-
1.7.1.1. 獨立用戶
-
1.7.1.2. 遠程訪問的用戶
-
1.7.1.3. 區域網用戶
-
1.7.2. 軟體都應當易於部署而不會出現任何問題
1.8. 可擴展性(Extensibility)
- 1.8.1. 添加新功能以進行擴展的容易程度
1.9. 簡記為PASSMADE
2. 代碼度量
2.1. 關註軟體的複雜性與可維護性
2.2. 維護性指標
-
2.2.1. 應用程式生命周期管理的重要組成部分
-
2.2.1.1. (Application Lifecycle Management,ALM)
-
2.2.2. 20及以上的分數顏色級別為綠色
-
2.2.2.1. 良好的維護性
-
2.2.3. 10分到19分的分數顏色級別為黃色
-
2.2.3.1. 中等維護性
-
2.2.4. 小於10分的分數顏色級別為紅色
-
2.2.4.1. 難以維護
2.3. 圈複雜度
- 2.3.1. 路徑越多,軟體就越複雜
2.4. 繼承深度
-
2.4.1. 相互繼承類的數量的度量值
-
2.4.2. 理想的繼承深度為1
2.5. 類耦合度
-
2.5.1. 類的代碼耦合度決定了類之間的耦合級別
-
2.5.2. 基於介面編程
2.6. 面向對象編程編程範式的影響
- 2.6.1. (Object-Oriented Programming,OOP)
2.7. 代碼行數
- 2.7.1. 源代碼行(包括空行)的完整統計數目
2.8. 可執行代碼行數
- 2.8.1. 可執行代碼中操作的數量
2.9. Visual Studio 自帶
3. 工具
3.1. 使用快速操作
- 3.1.1. VS自帶
3.2. JetBrains dotTrace
3.3. JetBrains ReSharper
3.4. JetBrains dotPeek
- 3.4.1. 免費
3.5. JetBrains dotCover
3.6. JetBrains dotMemory
3.7. JetBrains 全家桶
3.8. Telerik JustDecompile
- 3.8.1. 開源
4. 單元測試
4.1. TDD絕對是提升程式能力的一個必要之選
- 4.1.1. Test-Driven Development
4.2. 行為驅動開發(Behavior-Driven Development,BDD)
- 4.2.1. BDD是由TDD演進而來的一種軟體開發方法。
4.3. 軟體越關鍵,就越需要重視單元測試技術(例如TDD和BDD)的使用
4.4. 在代碼開發階段,程式員應該始終測試自己的代碼
4.5. 只有在代碼完成並準備進入產品環境的前提下,“程式員永遠不應該測試自己的代碼”才是正確的
4.6. 正確的規劃和設計實質上會加快編碼速度,尤其在考慮維護和擴展的情況下
-
4.6.1. 凡事預則立,不預則廢。
-
4.6.2. 越早考慮謀劃、考慮謀劃越全面,後期應對變化越從容
4.7. 單元測試不應當依賴在它之前運行的其他測試
4.8. 單元測試最好在毫秒時間內完成
5. 無法容忍缺陷的軟體
5.1. 處理私人和商業投資的金融系統
5.2. 醫療設備
5.3. 交通管理和導航系統的運輸信號系統
5.4. 空間飛行系統
5.5. 武器系統
6. 刪除冗餘
6.1. 無用代碼
- 6.1.1. 冗餘又沒有調用者的代碼
6.2. “雜訊”註釋
- 6.2.1. 程式員都會為這些註釋所擾
6.3. 冗餘測試
7. 測試工具
7.1. MSTest
7.2. NUnit
7.3. 測試框架
- 7.3.1. NUnit比MSTest提供了更加細粒度的測試方法和更好的性能
7.4. Moq
7.5. Rhino Mocks
7.6. 測試替身框架
- 7.6.1. Moq比Rhion Mock更加易於學習和使用
7.7. SpecFlow
- 7.7.1. BDD框架