如何提高代码质量

原文出处:http://blog.163.com/haizai219@126/blog/static/44412555201122921114695/


1.软件产品质量

软件产品质量通常可以从以下六个方面去衡量(定义) :

l         功能性(Functionality),即软件是否满足了客户业务要求;

l         可用性(Usability),即衡量用户使用软件需要付出多大的努力;

l         可靠性(Reliability),即软件是否能够一直处在一个稳定的状态上满足可用性;

l         高效性(Efficiency),即衡量软件正常运行需要耗费多少物理资源;

l         可维护性(Maintainability),即衡量对已经完成的软件进行调整需要多大的努力;

l         可移植性(Portability),即衡量软件是否能够方便地部署到不同的运行环境中;

由此可见,软件产品的质量有其明显的特殊性。而目前提高软件产品质量的主要方法是软件过程质量控制。

如何提高代码质量_第1张图片
 

软件产品质量关注点

2.软件过程质量控制

目前软件过程改进的主要方式有:

l         自顶向下的方式:能力成熟度模型集成CMMI,其层次分为初始级、可重复级、已定义级、已经管级、优化级。

l         自底向上的方式:个体软件过程(Personal   Software   Process,  PSP),向每个软件工程师阐明软件过程改进的原则,使他们能够明白如何有效地生产出高质量的软件。

 

3.代码质量

    软件是交付给用户,并由用户体验的产品;代码则是对软件正确且详细的描述,所以代码质量关系到软件产品的质量。虽然软件质量不等于代码质量,但是代码上的缺陷会严重的影响到软件产品的质量。因此,为提高代码质量的投入是值得的。

  

4.代码质量的关注点

围绕软件质量的可度量特性,代码质量的关注点主要有:

l         可读性:代码是否可读易读,对于一个团队来说,编码标准是否一致,编码风格是否一致(编码规范);

l         功能性:代码正确得实现了业务逻辑;

l         可维护性:代码逻辑是有层次的,是容易修改的(代码不能写死,预测可能发生的变化);

l         高效性:代码实现在时间和空间的使用上是高效的;

l         可变更性:需求变更时代码修改的代价最小(设计模式);


 
如何提高代码质量_第2张图片
 

代码质量关注点

5.代码质量控制

5.1分阶段模型

由于代码质量与开发人员息息相关,而开发人员的水平又有差异,所以在提高代码质量的改进过程中建议分阶段进行。

       借鉴CMMI的分级模型,代码质量的提高过程也是分阶段的:

初始阶段,开发人员认识到代码质量的重要性;

提高阶段,开发人员能够严格遵循开发规约;

优化阶段,开发人员能够自觉提高代码质量,能够为改进代码质量添砖添瓦;

很显然,我们已经处于初始阶段,为了进一步提高,必须具备几个条件,完整的规范、执行流程、检查机制和辅助工具。

5.2提高代码质量的方法

       提高代码质量的方法主要有:培训和审查监督。培训主要是针对业务领域、编程工具和技术、服务意识等基础方面的增强;而审查监督是针对编码规范、代码走查、代码评审、单元测试、集成测试、持续集成、执行流程等编程方面的增强。

如何提高代码质量_第3张图片

代码质量控制方法关注点

 

5.3质量控制过程

如何提高代码质量_第4张图片


代码复查

代码复查(Code Review),又叫“代码审查”,其基本思想就是,在开发人员编写完自己的代码后,由其他人来复查他写的代码,从而有效地发现代码中存在的缺陷。代码复查的一个基本理论就是,当我们越早发现代码存在的缺陷,我们解决缺陷的代价就越低。代码复查往往分成以下一个方面进行审查:

1)代码风格。在项目开发之初,我们往往会制定一个代码编写的规范,实际上,这个代码规范就包含了整个项目组的代码风格。由于软件开发人员的设计习惯不同,如果不统一代码风格,一个项目中的代码将五花八门,如变量和常量的命名、接口与实现类的注释、何时回车、怎样缩进等等。一个五花八门的设计风格,必将为日后的维护与改进带来困难。我们通过代码复查,一方面督促开发人员按照规范编写代码,另一方面也使开发人员自身形成良好的编程习惯。代码风格的审查,由于内容比较单一,我们常常可以通过一些代码复查的工具来自动完成,提高复查的效率。

2)重大缺陷。在一些关于代码复查的文章中,列出了一个常常的单子,描述了代码复查应当着重注意的重大缺陷,它们包括:存在SQL注入、易受跨站点脚本攻击、缓存区溢出、托管代码等等。项目组可以不断积累重大缺陷的审查项目,并在每次审查中逐一检查。重大缺陷审查是一个繁琐而细致的工作,如果能编写或使用一些审查软件,可以大大提高我们的审查效率。

3)设计逻辑与思路的审查。我认为,这部分的审查是代码复查中最核心、最有价值的部分。代码风格与重大缺陷的审查,虽然重要但简单而机械,可以通过软件自动检查;而设计逻辑与思路的审查,却是复杂而有深度的审查,需要有一定理论深度和编码经验的人才能完成,而且对新手尤其重要。前面提到,新手是任何项目组不可避免的问题。但遗憾的是,许多项目经理的办法是,只将一些简单而少量的工作交给新手完成,而将大量复杂的工作交给人数不多的那些老手来完成。这样的结果是,新手始终是新手,他们没有经过足够的锻炼;老手累死累活,无法指望新手予以分担工作。对于这个问题,我的办法是,通过代码复查,让老手去指导新手,让团队整体素质达到提高。具体办法就是,在新手完成编码以后,让老手去进行代码复查,指出新手的问题,指导新手设计。这样的过程最初可能需要重构,甚至重新编码。但经过这样的过程,新手将逐渐熟练,迅速成为老手,使整体团队素质提高。



你可能感兴趣的:(代码质量)