文档章节

如何提高代码质量

Osheep
 Osheep
发布于 2015/05/16 12:37
字数 1908
阅读 18
收藏 0

虽然软件质量不等于代码质量,但是代码上的缺陷会严重的影响到软件产品的质量。那么如何提高代码质量?请看我为大家带来提高代码质量的十二个技巧。

原文地址: http://www.hpboys.com/587.html

技巧一:测试驱动开发(TDD)

如果说要找一个最能提高代码质量同时还要减少bug的实践练习恐怕就非TDD莫属了。它的优点是适用于任何类型的项目和敏捷开发。其历史可以追溯到很早以前,但是直到XP的普及它才渐渐为人所知。当作为能自动化构建和测试实践的持续集成周期的一部分运作的时候,它被称为单元测试。

很多开发人员并不知道该怎么提高这方面的能力,这需要培训和教育。而且这是一个学习和积累的过程,不要想着能一夜吃成个胖子。

技巧二:验收测试驱动开发(ATDD)

这是基于TDD单元测试之后的一个新的水平。这不但表明了验收标准,而且还能在开发工作开始之前自动执行开发需求。在很多情况下,需要专业测试人员和客户携手共同参与到测试中去。

技巧三:持续集成(CI)

这能确保新代码不会干扰到已经存在的代码。如果再加上TDD和ATDD一起创建一个自动化、可重复的的测试套件,将会大幅度提高其使用价值。

技巧四:结对编程

有关于结对编程的争论似乎已经偃旗息鼓了,同样的人们实际应用的例子也越来越少。这不可谓不是一个遗憾。因为在即时的代码审查上,两个脑袋总比一个管用。它也允许开发人员将注意力全部灌注到手头的工作上——不必分心于电话、邮件、短信等等,因为我们的partner会搞定。

技巧五:代码审查

如果没办法结对编程,那么退而求其次,至少得进行一次代码审查。最好代码一写好就能落实到位一个轻量级流程的代码审查。我们在学校里学的那种又大又正规的流程其实并不实际——只有NASA( 美国宇航局)这种不差钱的土豪才买得起。所以换个轻量级的流程,意味着只需20%的成本就能享受80%的相同效果。

技巧六:静态分析工具

以前人人都不看好所谓的静态分析工具。现在则好了很多,虽然它们仍然并不能真正替代代码审查,但是其使用成本比较低。当然可能需要购买许可证,但是一旦将它们设置进系统中之后,以后每一次我们输入代码,它们都会一丝不苟兢兢业业地检查并且快速提示发现的所有错误。

技巧七:编码标准

老实说我并不怎么喜欢编码标准。从我的经验来看,很多团队在讨论编码标准上面浪费了太多的时间,而且一旦确定了某种标准,这往往会损害一部分开发人员的利益。不过如果我们能克服这些问题,那么绝对会有意想不到的效果。

首先建立一个讨论小组——应该以一种面对面的形式,不要通过电子邮件和电话——讨论出编码标准里应该包含哪些内容。找到需要讨论的地方,规分为不同的类别:少许定位为必选项目,推荐项目的数量可以较前者多点,候选项目则可以更多。在候选组里的需要经过深思熟虑之后才能放到推荐组和必选组中。剩下的第四组则是明确不能成为编程标准的内容。

每隔三至四个月检查一下这些标准,看看有没有需要从候选组提升到推荐组,或者从推荐组放到必选组的,要是发现什么已经不适应当前工作的项目,那就尽快删除或者降级。

此外,我们不应该将编码标准当做代码审查的一部分,而是两手都要抓,两手都要硬,万一不得不遗漏其中之一,可以借助自动化工具,例如运行静态分析工具,自动执行代码标准来检查代码。

技巧八:自动化

其实就目前而言,我们提出的大多数意见和建议,是能够自动化执行而且也应该被自动化执行的,但是可惜的是这个概念还没有深入人心。从长远看,非自动化就意味着需要耗费大量的时间,而且成本更高。虽然自动化看似在短期内需要投入大量的成本,但是从整体上而言,其实是节约了成本的。

技巧九:重构(以及重构工具)

重构的目的就在于提高代码质量,当然更重要的是,改善整体的设计。如果重构之后不能达到上述目的,那么说明你的思路错了。我们可以在重构的时候摒弃自动化单元测试,而且很多人也是这么做的,但是这等同于高空走钢丝的时候下面没有安全防护网——一旦失足便万劫不复。如果是装备了“安全防护网”的重构不但毋须占用大量时间,而且还能频繁运行。

以上这些对于能提高代码质量显然是显而易见的。还有一些虽然也在图片名单上,但是并不那么为大家所认可,不过我认为它们也值得包括进去。

技巧十:展示和说明(早期)

也许你会奇怪这怎么能提高代码质量呢,请不要怀疑,It does。因为定期展示相关潜在客户对于软件的要求,能促使开发人员不断地将他们的代码保持在最接近发布的状态,这也使得开发进程更快、更细致。

第二个原因则是能收集更多周期性的反馈,指引我们正确的方向。

最后,如果一个开发人员害怕将他的工作展现给用户和客户看,这是一个非常危险的信号,最好停下来好好自我检查一番。

技巧十一:用户测试

用户测试能让我们从另一角度进行测试,以便尽早发现问题。

与第10点相同,碎片化的处理模式能提供更为细致的步骤。无论是在工作规划上还是在改进代码上面,这都给了我们一个机会,能在做每一个决定之前都可以重新调整和矫正航向。

技巧十二:团队凝聚力

关于团队的凝聚力其重要性不言而喻,因为一个团队一旦失去了凝聚力,那么大家就会各执己见,各施其力。要想不如此,我们就必须要在开发目标和如何设计代码以及如何改进代码上面的观点达成一致。


© 著作权归作者所有

Osheep
粉丝 8
博文 35
码字总数 38596
作品 1
深圳
项目经理
私信 提问
追求代码质量 —— 闲谈团队的代码质量

定义代码质量 首先当你开始意识到项目里代码质量差的时候,恭喜你已经有了代码审美。这是推进编程水平的重要的一步。很显然,如果你不知道什么是差的代码,你就写不出好的代码。写不出好的代...

局长
2017/09/18
1K
7
闲谈团队的代码质量

定义代码质量 首先当你开始意识到项目里代码质量差的时候,恭喜你已经有了代码审美。这是推进编程水平的重要的一步。很显然,如果你不知道什么是差的代码,你就写不出好的代码。写不出好的代...

没故事的卓同学
2017/09/17
0
0
SOFAChannel#5:给研发工程师的代码质量利器 —— 自动化测试框架 SOFAActs

| SOFAChannel 有趣实用的分布式架构频道:前沿技术、直播 Coding、观点“抬杠”,多种形式。 将作为 SOFA 所有在线内容的承载,包含直播/音视频教程,集中体现 SOFAStack 的能力全景图。 | ...

SOFAStack
04/28
0
0
综合性代码质量保障工具Parasoft C/C++test 案例和示例分享

Parasoft C/C++test 是专业针对C和C++语言的开发测试方案,经广泛证明能提高软件开发效率和代码质量的自动化最佳实践解决方案,它能够使团队开发更好的代码,实施更有效的测试,以及持续地监...

zoujiajun33
2016/09/18
18
0
2013年"其实你不用去远方--长沙十月好代码"

代码就是一切! 代码是程序员沟通最直接的手段!代码是技术交流的手段!代码是需求交流的途径! 架构是代码!需求是代码!测试是代码! 单元测试,毫无疑问。 集成测试,压力测试,也是代码!...

曾沙
2013/10/09
2.8K
57

没有更多内容

加载失败,请刷新页面

加载更多

通过微服务来正确实施SOA

对于组织来说,能够构建、发展和扩展大型应用程序是至关重要的, 但所涉及的挑战使其成为一项艰巨的任务。正因为如此, 微服务凭借能够将单个组件拆分成围绕特定业务功能的独立服务,已成为构建...

Linux就该这么学
9分钟前
1
0
从 Spark 到 Kubernetes — MaxCompute 的云原生开源生态实践之路

2019年5月14日,喜提浙江省科学技术进步一等奖的 MaxCompute 是阿里巴巴自研的 EB 级大数据计算平台。该平台依托阿里云飞天基础架构,是阿里巴巴在10年前做飞天系统的三大件之分布式计算部分...

阿里云官方博客
12分钟前
0
0
使用python来操作redis用法详解

1、redis连接 redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的red...

dragon_tech
12分钟前
1
0
给研发工程师的代码质量利器 | SOFAChannel#5 直播整理

> SOFA:Channel,有趣实用的分布式架构频道。 > > 本文根据 SOFAChannel#5 直播分享整理,主题:给研发工程师的代码质量利器 —— 自动化测试框架 SOFAActs。 > > 回顾视频以及 PPT 查看地址...

SOFAStack
14分钟前
0
0
段错误总结

https://blog.csdn.net/e_road_by_u/article/details/61415732 一、段错误是什么 一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问...

悲催的古灵武士
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部