英文原文:Code Review Checklist and Guidelines for C# Developers程序員
這是爲 C# 開發者準備的通用性代碼審查清單,能夠當作開發過程當中的參考。這是爲了確保在編碼過程當中,大部分通用編碼指導原則都能注意到。對於新手和缺少經驗(0 到 3 年工做經驗)的開發者,參考這份清單編碼會很幫助。算法
清單數據庫
1. 確保沒有任何警告(warnings)。編程
2. 若是先執行Code Analysis(啓用全部Microsoft Rules)再消除全部警告就更好了。設計模式
3. 去掉全部沒有用到的 usings。編碼過程當中去掉多餘代碼是個好習慣。(參考:msdn)安全
4. 在合理的地方檢查對象是否爲’null’,避免運行的時候出現 Null Reference Exception。網絡
5. 始終遵循命名規範。通常而言變量參數使用駝峯命名法,方法名和類名使用Pascal命名法。(參考:msdn)架構
6. 請確保你瞭解 SOLID 原則。ide
根據維基百科定義:在程序設計領域,SOLID (單一功能、開閉原則、里氏替換、接口隔離以及依賴反轉)是由羅伯特·C·馬丁在 21 世紀早期引入的記憶術首字母縮略字,指代了面向對象編程和麪向對象設計的五個基本原則。當這些原則被一塊兒應用時,它們使得一個程序員開發一個容易進行軟件維護和擴展的系統變得更加可能。SOLID 所包含的原則是經過引起編程者進行軟件源代碼的代碼重構進行軟件的代碼異味清掃,從而使得軟件清晰可讀以及可擴展時能夠應用的指南。SOLID 被典型的應用在測試驅動開發上,而且是敏捷開發以及自適應軟件開發的基本原則的重要組成部分。參考:wiki/SOLID_(面向對象設計)
7. 代碼可重用性:若是一塊代碼已經被使用超過一次,或者你但願未來使用它,請提取成一個方法。將重複的工做作成通用的方法放在相關的類中,這樣一旦你完成別人就可使用了。將經常使用功能開發成用戶控件,這樣能夠跨項目重用它們。(參考:① 、 ②)
8. 代碼一致性:比方說,Int32 寫成 int,String 寫成 string,應該在代碼裏保持統一形式。不能一會二寫成 int 一下子寫成 Int32。
9. 代碼可讀性:代碼應該是可維護的,便於其餘開發者理解。(參考:msdn)
10. 釋放非託管資源,好比文件I/O,網絡資源等。一旦使用結束就應該釋放它們。若是你想一旦超出使用範圍就自動釋放對象,可使用 usings 將非託管代碼括起來。參考:msdn
11. 合理實現異常處理(try/catch 和 finally 塊)和異常記錄。參考:msdn
12. 確保代碼中方法的行數不要過多,不超過 30 到 40 行。
13. 及時用代碼管理工具 check-in/check-out 代碼。(好比 TFS) 參考:codeproject.com
14. 相互審查代碼:和你的同事交換代碼,實現內部審查。
15. 單元測試:編寫開發測試用例完成單元測試,確保代碼被送到 QA 之前,基本測試完成。參考:msdn
16. 儘可能避免 for/foreach 循環嵌套和 if 條件嵌套。
17. 若是代碼只會使用一次,請使用匿名類型。參考:msdn
18. 儘可能使用 LINQ 查詢和 Lambda 表達式,增長可讀性。參考:msdn
19. 合理使用 var、object 和 dynamic 關鍵字。因爲不少開發者會感到困惑或者知道的不多,會以爲它們有些類似,故而交換使用,這是要避免的。參考:blogs.msdn
20. 使用訪問限定符(private, public, protected, internal, protected internal)限定每一個方法、類或變量的須要範圍。比方說若是一個類只會在程序集內使用,那麼定義成 internal 就足夠了。參考:msdn
21. 在須要保持解耦的地方使用接口,有些設計模式的出現也是因爲接口的使用。參考:msdn
22. 按照用法和須要將類定義爲 sealed、static 或 abstract。參考:msdn
23. 若是須要屢次串聯,請使用 Stringbuilder 代替 string,這能夠節省堆內存。
24. 檢查是否有不可能執行的代碼,若是有,請修改。
25. 在每一個方法前註釋,說明它的用法、輸入類型和返回值類型信息。
26. 使用相似 Silverlight Spy 的工具,檢查和操控 Silverlight 應用在運行時對 XMAL 的渲染,以此來改善效率。這能夠在設計執行 XAML 時,節省大量退回和來回修改的時間。
27. 使用 filddler 工具經過檢查 HTTP/網絡流量和帶寬,來跟蹤 web 應用和服務的性能。
28. 若是你想確認 Visual Studio 之外的方法,請使用 WCFTestClient.exe 工具,或者裝載它的進程到 Visual Studio 來進行調試。
29. 在任何合理的地方使用 constants 和 readonly。參考:/msdn、msdn
30. 儘可能避免強制轉換和類型轉換,由於會形成性能損失。參考:msdn
31. 對於你想提供自定義信息的類,請重載 ToString (來自 Object 類)。參考:msdn
32. 避免直接從其餘代碼中 ctrl+c/ctrl+v。一直建議仍是本身用手敲,即便你已經找到相關代碼。這樣能夠鍛鍊本身寫代碼能力,還能正確理解那段代碼的用法。最終你永遠都不會忘記那段代碼。
33. 保持閱讀書籍和文章的良好習慣,遵循大神們的實踐指導。(好比微軟專家和一些著名的專家,Martin Fowler, Kent Beck, Jeffrey Ritcher, Ward Cunningham, Scott Hanselman, Scott Guthrie, Donald E Knuth.)
34. 確認代碼是否有內存泄漏。若是有,請確保已修正。參考:blogs.msdn.com
35. 儘量參加專家們組織的技術研討會,能夠接觸到最新的軟件趨勢、技術和最佳實踐
36. 要透徹理解 OOP 概念,並儘量在代碼裏實現。
37. 知道項目設計架構,能夠從總體上理解程序的執行流程。
38. 採起必要措施阻止避免任何交叉腳本攻擊、SQL 注入和其餘安全漏洞。
39. 永遠記得將保密和敏感信息加密(經過使用好的加密算法),好比保存到數據庫的密碼和保存在 web.config 文件中的鏈接字符,要避免被非認證的用戶操縱。
40. 避免對已知類型(原始類型)使用默認關鍵字,好比 int, decimal, bool 等。多數狀況下,若是不肯定是值類型仍是引用類型,就使用泛型類型(T)。參考:msdn
41. 微軟(在代碼分析條例和指導中)並不推薦使用’out’和’ref’,這些關鍵字是經過引用傳參,請注意,’ref’參數在傳入被調用方法以前,應當在調用方法中先初始化,但’out’參數就不是這樣。參考:msdn
出處:https://news.cnblogs.com/n/186059/