您的位置:首页 > 编程语言

如何保证代码质量

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

1. Java代码规范学习

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

import语句中不要用通配符

1行代码不要超过80字符,通过IDE的设置进行自动换行

对于变量的使用,需要时再定义,并及时初始化

@Override能用则用

捕获的异常一定要做处理

极少会去重载Object.finalize,因为你无法确保它一定执行。

2. CodeReview

what?

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

when?

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

how?

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

事前准备

CodeReview的对象(代码)

CodeReview的内容(审查重点,有审查清单)

评审规范和标准(团队统一标准)

选择CodeReview的参与者

选择CodeReview的实施方式

实施阶段

准确记录(App推荐:30 second habit,这个app有利于提高会议效率,让你不再开毫无意义的会)

讲解与提问

逐项审查

注意气氛(不要搞成批斗会)

事后跟踪

确认发现的问题

修正问题(问题责任者负责)

确认结果(PM)

who?

写代码的人

师兄

团队成员

3. 重构

what?

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

why?

重构可以用来改进软件设计

重构使得软件更容易理解

重构帮助找到bug

重构可以提高编程速度

when?

重构应该随时随地进行,不应该为了重构而重构,是因为你想做什么事情,而重构可以帮你把那些事情做好。一般来说有以下三种场景,可以重构:

1. 添加功能时重构

2. 修补错误时重构

3. 复审代码时重构

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

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

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

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

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

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

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

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

参考资料

Git的使用规范流程

Google Java编程风格指南中文版

《重构:改善既有代码的设计》

Java Mockito入门

代码大全

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: