如何保证代码质量

代码质量的评估维度很多,我自己的理解有这几个层次:能用——>能读——>能改——>能适应业务的变更。高质量的代码不是一蹰而就的的,是从特别小的细节例如变量命名规则到高大上的架构设计,一点点积累而成的。关于架构设计的部分,正在阅读《重构》和《Head First 设计模式》,在这里我总结下最近看到的一些改进代码质量的方法和工具,包括:代码规范、CodeReview、重构、单元测试以及代码覆盖率、findbugs工具

1. Java代码规范学习

基本以Google的Java代码规范为准,虽然现在的IDE已经能帮助我们写出统一风格的代码,但是仍然建议浏览一次。我学习到的几点整理如下:

  • import语句中不要用通配符
  • 1行代码不要超过80字符,通过IDE的设置进行自动换行
  • 对于变量的使用,需要时再定义,并及时初始化
  • @Override能用则用
  • 捕获的异常一定要做处理
  • 极少会去重载Object.finalize,因为你无法确保它一定执行。

2. CodeReview

what?

CodeReview是在开发阶段发现代码缺陷的一种方式,可以有效提高代码质量,降低维护成本;是团队成员互相学习、分享编程经验的提高过程。

when?

代码刚刚写完的时候最好,这个时候也是代码重构和调整的最佳时机。

how?

代码在review之前应该已经build过、正确执行功能、开发人员对代码做了单元测试(特别建议单元测试要跟着开发一起写,并且避免过长的函数和过于复杂的逻辑,否则单元测试都没法写)

  1. 事前准备

    • CodeReview的对象(代码)
    • CodeReview的内容(审查重点,有审查清单)
    • 评审规范和标准(团队统一标准)
    • 选择CodeReview的参与者
    • 选择CodeReview的实施方式
  2. 实施阶段

    • 准确记录(App推荐:30 second habit,这个app有利于提高会议效率,让你不再开毫无意义的会)
    • 讲解与提问
    • 逐项审查
    • 注意气氛(不要搞成批斗会)
  3. 事后跟踪
    • 确认发现的问题
    • 修正问题(问题责任者负责)
    • 确认结果(PM)

who?

  1. 写代码的人
  2. 师兄
  3. 团队成员

3. 重构

what?

重构是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构。本质上说,重构是在代码写好之后改进它的设计。

why?

  1. 重构可以用来改进软件设计
  2. 重构使得软件更容易理解
  3. 重构帮助找到bug
  4. 重构可以提高编程速度

when?

重构应该随时随地进行,不应该为了重构而重构,是因为你想做什么事情,而重构可以帮你把那些事情做好。一般来说有以下三种场景,可以重构:
1. 添加功能时重构
2. 修补错误时重构
3. 复审代码时重构

4. 代码覆盖率:cobertura(maven插件)

代码覆盖率,即代码覆盖的程度。

开始工作的时候,第一份任务是提升某个项目的覆盖率到85%。我最开始挺疑惑的:84.1%和85%有什么区别,只是数字的不一样,对整个软件项目的影响有那么大么?其实,代码覆盖率并不是目标,它只是一种手段,帮助我们寻找项目中存在复杂业务逻辑的地方,而这里,就是可以改进的地方。但是,另一方面,代码覆盖率也有缺点,列举如下:

  • 覆盖率数据只能代表你测试过哪些代码,不能代表你是否测试好这些代码。(比如上面第一个除零Bug)

  • 不要过于相信覆盖率数据。

我使用cobetura插件在本地生成代码覆盖率报告。

5. 工具查bug:findbugs(idea插件)

代码能用和优秀的代码还有一定距离,findbugs帮助我们提升代码质量,会发现一些具备不良用法的代码、暗藏性能问题的代码等等。

参考资料

  1. Git的使用规范流程
  2. Google Java编程风格指南中文版
  3. 《重构:改善既有代码的设计》
  4. Java Mockito入门
  5. 代码大全

在文章的最后为公众账号打个广告:dqVoice,我尽量写一点有质量的文章跟大家分享,欢迎大家关注。

这里写图片描述

原文地址:https://www.cnblogs.com/javaadu/p/11742614.html