很多公司的研发工作流程中都会代码审查这个环节,那么在做代码审查到底应该从哪些方面来入手呢?当然每个公司或每个团队都有自己的标准,每个人经验也不一样,所以标准并不完全相同,这里我就说一下我们团队在代码审查时是怎么做的。

首先我们遵循的总的标准是:

  • 代码整洁
  • 易读
  • 可维护性高
  • 可扩展性强
  • 高性能

看一下具体的细节。

1. 格式化

我们有自己的代码风格配置文件,每个开发成员都是一样的环境,一样的check style,保存时自动格式化,这样可以保证代码风格一致,审查时比较方便查看各个版本的不同。

2. 命名

不论是类名,变量名,方法名都要有实际的意义,要让别人一看到就能联想到是什么意思,命名规范采用驼峰式,尽量用领域的单词。

3. 类设计

设计类时应基于接口,类不应设计得过大,根据领域设计类,属性太多应考虑分细,多使用聚合或继承。

结合实际设置类,属性,方法的访问权限。

如涉及到比较,排序之类的,应重写hashCode(),equals(),toString()。

4. 方法设计

一个方法应该只设计为干一件事,参数不应太多(太多可用对象封装),行数不要太长(尽量控制在50行,视情况而定),否则应考虑重构,避免将所有事情都在一个方法做完,考虑代码易读和复用。

参数的null或有效性检查,如有些不符合,应该抛出异常,不要是code码返回。

尽量不要返回null。

5. 异常

可以恢复的情况使用已受检异常(checked exceptions),在程序中处理中,避免运行时异常。

不要在异常捕获中返回数据。

不要在捕获异常后什么都不做。

异常抛出后需要关闭连接和流之类的。

不要用异常来参与业务逻辑。

6. 逻辑

代码结构清晰,逻辑流畅,不需要的变量不要先声明,可以合并的尽量合并,无需声明。

经常要用的变量重构成static常量,变为公用,不要在代码中写死。

多用枚举代替int或String常量。

尽量通过接口引用对象。

尽量用简单高效的代码实现某功能。

如果遇到逻辑复杂的代码,应写明注释。

for或if的层级嵌套尽量不要超过4层。

case语句后面,需要加break。

7. 性能

jar包尽量使用最新的稳定版,比如某个功能有更高效的实现方式,应考虑。

字符串的连接操作应该考虑StringBuffer,StringBuilder。

字符串的很多操作都可以用StringUtil工具类。

多线程中使用executors而不是task和thread。

并发同步代码的范围尽量小。

避免创建很多对象。

避免无限循环,要有终止条件判断。

8. sql

参考数据库及sql的优化,这里不做说明。

9. 其他

上面说的都是人工审查,可以配置一些插件来帮助审查,如checkstyle,sonar,还可考虑第三方的代码检查,可参考https://www.cnblogs.com/code-style/p/4409264.html。

总之就是要按上面的原则,不停的优化代码,随着代码量的增多,还需要不停的重构和设计。

 

posted on 2019-01-15 18:42  jameszheng  阅读(303)  评论(0编辑  收藏  举报