0x01.确保没有任何警告(warnings)。

0x02.如果先执行Code Analysis(启用所有Microsoft Rules)再消除所有警告就更好了。

0x03.去掉所有没有用到的usings。编码过程中去掉多余代码是个好习惯。(参考:msdn)

0x04.在合理的地方检查对象是否为’null’,避免运行的时候出现Null Reference Exception。

0x05.始终遵循命名规范。一般而言变量参数使用驼峰命名法,方法名和类名使用Pascal命名法。(参考:msdn)

0x06.请确保你了解SOLID原则。

根据维基百科定义:在程序设计领域,SOLID (单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)是由罗伯特·C·马丁在21世纪早期引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则。当这些原则被一起应用时,它们使得一个程序员开发一个容易进行软件维护和扩展的系统变得更加可能。SOLID所包含的原则是通过引发编程者进行软件源代码的代码重构进行软件的代码异味清扫,从而使得软件清晰可读以及可扩展时可以应用的指南。SOLID被典型的应用在测试驱动开发上,并且是敏捷开发以及自适应软件开发的基本原则的重要组成部分。参考:wiki/SOLID_(面向对象设计)

0x07.代码可重用性:如果一块代码已经被使用超过一次,或者你希望将来使用它,请提取成一个方法。将重复的工作做成通用的方法放在相关的类中,这样一旦你完成别人就可以使用了。将常用功能开发成用户控件,这样可以跨项目重用它们。(参考:①、②)

0x08.代码一致性:比方说,Int32写成int,String写成string,应该在代码里保持统一形式。不能一会二写成int一会儿写成Int32。

0x09.代码可读性:代码应该是可维护的,便于其他开发者理解。(参考:msdn)

0x10.释放非托管资源,比如文件I/O,网络资源等。一旦使用结束就应该释放它们。如果你想一旦超出使用范围就自动释放对象,可以使用usings将非托管代码括起来。参考:msdn

0x11.合理实现异常处理(try/catch和finally块)和异常记录。参考:msdn

0x12.确保代码中方法的行数不要过多,不超过30到40行。

0x13.及时用代码管理工具check-in/check-out代码。(比如TFS)参考:codeproject.com

0x14.相互审查代码:和你的同事交换代码,实现内部审查。

0x15.单元测试:编写开发测试用例完成单元测试,确保代码被送到QA以前,基本测试完成。参考:msdn

0x16.尽量避免for/foreach循环嵌套和if条件嵌套。

0x17.如果代码只会使用一次,请使用匿名类型。参考:msdn

0x18.尽量使用LINQ查询和Lambda表达式,增加可读性。参考:msdn

0x19.合理使用var、object和dynamic关键字。由于很多开发者会感到困惑或者知道的很少,会觉得它们有些相似,故而交换使用,这是要避免的。参考:blogs.msdn

0x20.使用访问限定符(private, public, protected, internal, protected internal)限定每个方法、类或变量的需要范围。比方说如果一个类只会在程序集内使用,那么定义成internal就足够了。参考:msdn

0x21.在需要保持解耦的地方使用接口,有些设计模式的出现也是由于接口的使用。参考:msdn

0x22.按照用法和需要将类定义为sealed、static或abstract。参考:msdn

0x23.如果需要多次串联,请使用Stringbuilder代替string,这可以节省堆内存。

0x24.检查是否有不可能执行的代码,如果有,请修改。

0x25.在每个方法前注释,说明它的用法、输入类型和返回值类型信息。

0x26.使用类似Silverlight Spy的工具,检查和操控Silverlight应用在运行时对XMAL的渲染,以此来改善效率。这可以在设计执行XAML时,节省大量退回和来回修改的时间。

0x27.使用filddler工具通过检查HTTP/网络流量和带宽,来跟踪web应用和服务的性能。

0x28.如果你想确认Visual Studio以外的方法,请使用WCFTestClient.exe工具,或者装载它的进程到Visual Studio来进行调试。

0x29.在任何合理的地方使用constants和readonly。参考: /msdn、msdn

0x30.尽量避免强制转换和类型转换,因为会造成性能损失。参考:msdn

0x31.对于你想提供自定义信息的类,请重载ToString(来自Object类)。参考:msdn

0x32.避免直接从其他代码中ctrl+c/ctrl+v。一直建议还是自己用手敲,即使你已经找到相关代码。这样可以锻炼自己写代码能力,还能正确理解那段代码的用法。最终你永远都不会忘记那段代码。

0x33.保持阅读书籍和文章的良好习惯,遵循大神们的实践指导。(比如微软专家和一些著名的专家,Martin Fowler, Kent Beck, Jeffrey Ritcher, Ward Cunningham, Scott Hanselman, Scott Guthrie, Donald E Knuth.)

0x34.确认代码是否有内存泄漏。如果有,请确保已修正。参考:blogs.msdn.com

0x35.尽可能参加专家们组织的技术研讨会,可以接触到最新的软件趋势、技术和最佳实践

0x36.要透彻理解OOP概念,并尽可能在代码里实现。

0x37.知道项目设计架构,可以从整体上理解程序的执行流程。

0x38.采取必要措施阻止避免任何交叉脚本攻击、SQL注入和其他安全漏洞。

0x39.永远记得将保密和敏感信息加密(通过使用好的加密算法),比如保存到数据库的密码和保存在web.config文件中的连接字符,要避免被非认证的用户操纵。

0x40.避免对已知类型(原始类型)使用默认关键字,比如int, decimal, bool等。多数情况下,如果不确定是值类型还是引用类型,就使用泛型类型(T)。参考:msdn

0x41.微软(在代码分析条例和指导中)并不推荐使用’out’和’ref’,这些关键字是通过引用传参,请注意,’ref’参数在传入被调用方法之前,应当在调用方法中先初始化,但’out’参数就不是这样。参考:msdn

给 C# 开发者的代码审查清单相关推荐

  1. 给C#开发者的代码审查清单

    这是为C#开发者准备的通用性代码审查清单,可以当做开发过程中的参考.这是为了确保在编码过程中,大部分通用编码指导原则都能注意到.对于新手和缺乏经验(0到3年工作经验)的开发者,参考这份清单编码会很帮助 ...

  2. 代码审查清单 Code Review

    代码审查清单 常规项 代码能够工作么?它有没有实现预期的功能,逻辑是否正确等. 所有的代码是否简单易懂? 代码符合你所遵循的编程规范么?这通常包括大括号的位置,变量名和函数名,行的长度,缩进,格式和注 ...

  3. 2017前端开发者必学清单

    前端生态系统高速发展,我们把时间花费在尝试新技术并在网上讨论它们.我并非指不该如此,但也许我们可以放缓脚步,去多关注下那些变化不大的东西.这些东西能很大程度改善工作质量,提升工作价值,帮我们去理解新的 ...

  4. 6月24日AppCan移动开发者大会礼品清单遭泄露

    6月24日,第一届AppCan移动开发者大会将在北京国际会议中心举办,大会以"平台之上,应用无限"为主题,全景展现移动应用发展趋势.AppCan 移动技术蓝图及80万开发者的技术实 ...

  5. 未能加载包studio package_Python包开发者的必备清单

    根据一些开发人员的说法,Python是2019年排名前五的编程语言之一[1].基于其开源社区的实力以及在新兴领域(例如大数据分析和机器学习)的高采用率,当人们谈论到其在未来几年的潜在发展趋势时,应该不 ...

  6. linux内核之旅网站,linux 内核之旅

    [转]给 C# 开发者的代码审查清单 这是为C#开发者准备的通用性代码审查清单,可以当做开发过程中的参考.这是为了确保在编码过程中,大部分通用编码指导原则都能注意到.对于新手和缺乏经验(0到3年工作经 ...

  7. 程序员必备的代码审查(Code Review)清单

    转自 http://blog.jobbole.com/83595/ 在我们关于高效代码审查的博文中,我们建议使用一个检查清单.在代码审查中,检查清单是一个非常好的工具--它们保证了审查可以在你的团队中 ...

  8. 关于独立游戏开发者营销游戏的建议清单

    一个独立游戏开发者的销售清单(包含便携版本) 没有什么感觉比你创造了一个自豪的游戏后却只能看的它渐渐地被冷待更糟了.不幸的是,现在的游戏不仅仅满足于创作精彩的内容上.为了让你的GAME与众不同,现在你 ...

  9. 高效代码审查:来自前质疑者的9个建议

    转自:http://www.iteye.com/news/30235 理论我知道.代码审查(Code Review)有助于: 抓bug 保证代码的可读性,可维护性 在团队中散播代码的知识 让新人适应团 ...

最新文章

  1. jdbc mysql查询显示图片_JDBC【向数据库中存入读取图片】
  2. java des zero_android----Java DES加密算法工具类
  3. asp多重查询的解决方案
  4. java jpopupmenu事件_Java+Swing+常用事件和监听器接口
  5. 【转】java string类的方法及说明
  6. gridview标题居中显示_Pr:制作片尾滚动字幕(旧版标题法)
  7. 今天装了个GPS时钟
  8. 计算机应用基础文字处理测试题,国家开放大学《计算机应用基础》考试与答案形考任务模块2Word2010文字处理系统—客观题测验答案.docx...
  9. js新建一个日期对象,指定日期值. 兼容IE8以下
  10. c语言中*在变量的右上角,C语言中变量的声明和定义
  11. 移动页面框架头尾固定中间滚动 absolute模拟fixed
  12. Java Thread之Sleep()使用方法总结
  13. 一张有转折意义的神秘地图
  14. [c++11]我理解的右值引用、移动语义和完美转发
  15. 硬见小百科:机加工中获得工件尺寸精度的常用方法
  16. 有符号整型的数据范围为什么负数比正数多一个
  17. 制作TTF格式的字体
  18. 麒麟V10系统安装教程
  19. 小鑫の日常系列故事(七)——小纸条
  20. 华为p40pro手机计算机在哪里,一文看懂华为P40/P40 Pro差别在哪

热门文章

  1. PLSQL_基础系列11_递归和层次查询CONNECT BY(案例)
  2. netstat -an中state含义
  3. [Asp.Net]自己的一个SqlHelper类
  4. [导入]在ASP.NET中跨页面实现多选
  5. springmvc读取静态数据,解决html访问不到css和js等静态数据的问题
  6. 【题解】Luogu SP1435 PT07X - Vertex Cover
  7. CUBRID学习笔记 42 Hierarchical QuerySQL层级查询
  8. Java POI 导出EXCEL经典实现 Java导出Excel
  9. 读书笔记_Effective_C++_条款三十一:将文件间的编译依存关系降至最低(第二部分)...
  10. JavaScript面试题目集锦