【老王公众号】

后端代码评审(Code Review)

代码审查(Code Review)是软件开发中常用的手段,和QA测试相比,它更容易发现和架构以及时序相关等较难发现的问题,还可以帮助团队成员提高编程技能,统一编程风格等。

一.审查原因(Why)

持续、有效的开展代码走查,将会收获许多收益,具体表现在:

1. 能及时发现代码中的Bug,保证版本质量。

2. 提升代码的可读性、可维护性,建立团队共同的编码风格。

3. 有利于知识共享,打破技能壁垒,避免单点故障。

4. 通过展示自己的优秀代码和设计思路,提升了个人成就感。

5. 通过讲解自己的代码,对个人沟通能力也是一种提升。

6. 提高开发者的对编码的责任感。

 

二.审查对象内容(What)

前后端所有研发人员审查周期内提交的代码及数据库脚本

如代码数量过多可挑选部分重要功能模块进行

三.审查人员(Who)

代码走查不只是开发人员的事情!需要多种角色同时参与,因为走查活动不仅仅要看功能是否实现了,还要看代码和设计是否一致?测试用例是否完备和有效?

1. 主持人(老王)

负责主持整个走查活动,控制时间和进度。

2. 讲解人(被审查研发人员)

负责对走查的代码进行讲解。

3. 评审人(其他研发人员,测试,UI)

负责对走查代码提出问题,建议。

 

四.审查地点(Where)

会议室

 

五.周期计划(When

一周一次,时间每周四下午17:30

六.审查规范方法(How)

6.1编码习惯:(关注点-框架使用与基本功)

1. 没有被使用的变量要删除。

2. 针对不同的 Exception 要用不同的 catch 语句,而不是一个 Exception 解决所有问题。

3. 针对变量,方法和类要用相同的命名方法。

4. 常量应该被写在独立的常量类中。

5. 每行代码的尾部不要有多余的空格。在什么地方放置空格和断行符?使用制表符还是空格?大括号如何放置?

6. 对于括号,循环,if语句等等要用统一的格式。

7. 每一个单独的方法不应该超过100行。

8. 一个单独的语句不应该超过编辑器的可视区域,它可以被拆分成几行。

9. 检查 String 对象既不是null也不是空的最好方法是 if(“”.equals(str))

10. 假如类有很多成员变量,并且实例化的时候只需要少数变量传入的话,最好使用静态工厂方法,而不是重载构造函数。

11. 给方法添加适当的访问控制,而不是所有都是 public。

12. 遵守项目中使用的框架的最佳实践建议,例如 Spring,Struts,Hibernate,jQuery。

13. 域、常量、变量、参数、类的名称是否符合标准?命名是否太短?

 

6.2业务实现:(关注点-设计思路与业务逻辑)

1. 如果类似的逻辑被使用了多次,应该把它写成一个帮助类,然后在多出调用。

2. 鼓励使用 API 而不是重复编写代码解决相同的问题。

3. 要强调代码的单元测试。

4. 任何新加的代码不应该破坏已有的代码。

6.3安全(关注点-系统安全性sql注入等

1. 任何代码都不能执行用户的输入,除非转义过了。这个常常包含 JavaScript 的 eval 函数和 SQL 语句。

2. 禁止那些在短时间内提交非常多请求的 IP。

3. 任何类,变量,还有方法都应该有正确的访问域。

6.4性能(关注点-系统运行消耗和可扩展性

1. 所有数据库和文件操句柄在不需要的时候都应该被关闭。

2. SQL 语句的写法会导致性能千差万别。

3. 鼓励创建不可变(immutable)的类。

4. 类似的逻辑代码,尽量通过 if else 语句来实现更多的重用。

5. 尽量避免使用重对象(heavy objects)。

6. 如果是 Web 项目,请检查是否使用了合适的图片尺寸,CSS sprites 和浏览器缓存等技术。

7. 全局都需要的信息保存在 application context 中。

8.检查代码是否包含无效代码、多余变量、可复用方法、不必要的开销

9.操作码,异常码是否符合统一要求规范

6.5注释:关注点-代码可读性注释清晰完善

1.在有处理逻辑的代码中,源程序有效注释量必须在20%以上。

2.文件注释:文件注释写入文件头部。

3.类和接口的注释:该注释放在class定义之前,using或package关键字之后。

4.类和接口的注释内容:类的注释主要是一句话功能简述、功能详细描述,说明:可根据需要列出:版本号、生成日期、作者、内容、功能、与其它类的关系等。

5.类属性、公有和保护方法注释:写在类属性、公有和保护方法上面。用//来注释,需要对齐被注释代码。

6.注释的内容要清楚、明了,含义准确,防止注释二义性。说明:错误的注释不但无益反而有害

7.对于方法内部用throw语句抛出的异常,必须在方法的注释中标明,对于所调用的其他方法所抛出的异常,选择主要的在注释中说明。对于非RuntimeException ,即throws子句声明会抛出的异常,必须在方法的注释中标明。

6.6新技术:关注点-适用性和扩展学习

1.代码使用新技术是否有效,是否最优,一起讨论学习

推荐阅读  

【远程医疗】互联网医院 卫健委数据上报平台技术方案
【技术选型】你的公司,你的项目真的适合微服务吗?
【划划重点】论大数据中主数据的重要性
【视频问诊】ffmpeg+HLS直播与回放技术
【远程医疗】智能导诊技术方案

posted @ 2020-07-07 15:15  CTO老王  阅读(1256)  评论(0编辑  收藏  举报