Code Review & Code Conventions
质量是衡量一个软件是否成功的关键要素。而对于商业软件系统,尤其是企业应用软件系统来说,除了软件运行质量、文档质量以外,代码的质量也是非常重要的。软件开发进行到编码阶段的时候,最大的风险就在于如何保证代码的易读性和一致性,从而使得软件的维护的代价不会很高。
在软件开发的过程中,以下几种情形随处可见:
1) 软件维护时间长,而且维护人员的积极性不高:
做过软件维护的开发人员,尤其是在接手不是自己开发产品的源码的时候,即使有良好的文档说明,仍然会对代码中冗长、没有注释的段落“叹为观止”。理解尚且如此困难,何况要修改或者增加新的功能。因此,很多开发人员不愿意进行软件维护的工作。
2)新的开发人员融入团队的时间比较长:
除了没有良好的培训、文档等有效的机制以外,每个人一套的编码风格,也容易造成新成员对于已有代码的理解不够,甚至出现偏差。
编码规范,作为解决以上问题的方案已经得到了很长时间的应用。而在产品或者项目实际开发的过程中,仅有Code Conventions是不能解决Code的问题的。它往往和Code Review配合,作为代码质量保证的手段。
1.1. Code Review的层次与内容
Code Review就是审查代码的质量。根据形式分为两种,一种是交叉代码审查,就是自己的代码由他人来检查,就象检查作业一样;另一种是代码会审,就是以会议的形式,大家共同审核代码的质量。
Code Review 的目的有:
·在项目早期就能够发现代码中的BUG;
·帮助初级开发人员学习高级开发人员的经验,达到知识共享;
·避免开发人员犯一些很常见,很普通的错误;
·保证项目组人员的良好沟通;
·项目或产品的代码更容易维护;
一般情况下,Code Review的内容与层次如下:
·编码风格与代码规范一致性:检查代码是否符合编码规范,确保所有人写的代码基本一致;
·代码满足基本的功能要求:检查代码的逻辑实现,以及单元测试的编写策略,确认实现功能性需求;
·代码满足性能等非功能性需求:非功能性需求一般不便于测试,需要借助一定的工具和Review人员的素质,针对编码中对于性能影响的瓶颈给出解决方案;
·去除冗余,提高代码可读性:适当使用 Refactorying技术,去除代码中的Bad Smell;如果有需要,可以Refactorying to Pattern。
1.2. Code Conventions的尴尬境地
从Code Review的层次分析中我们可以看到,Code Conventions是其基础。而实际的情况是,在软件开发中,两者都沦为“宣传口号”,而非切实执行的实践。
造成这种情形的原因有二:
1. Code Conventions是开发过程的“道德”而非“法律”:很多时候,由于没有有效的工具或者辅助手段的支持,是否遵守编码规范是依靠开发人员的“道德素养”-自觉遵守,而非实际考核的指标;
2. Code Review的基石不牢:在第一种原因的影响下,Code Review执行的过程中,如果花费了大量的时间在代码规范的检查上,那么对于更为重要的程序执行逻辑、性能、易读性等的评审投入的精力就有限的;而这种情况反过来也使得对于编码规范的检查,通常都是走过场。最后,还是每个人一套规范,只要最终交付的产品完成指定的功能就可以啦。
质量是衡量一个软件是否成功的关键要素。而对于商业软件系统,尤其是企业应用软件系统来说,除了软件运行质量、文档质量以外,代码的质量也是非常重要的。软件开发进行到编码阶段的时候,最大的风险就在于如何保证代码的易读性和一致性,从而使得软件的维护的代价不会很高。
在软件开发的过程中,以下几种情形随处可见:
1) 软件维护时间长,而且维护人员的积极性不高:
做过软件维护的开发人员,尤其是在接手不是自己开发产品的源码的时候,即使有良好的文档说明,仍然会对代码中冗长、没有注释的段落“叹为观止”。理解尚且如此困难,何况要修改或者增加新的功能。因此,很多开发人员不愿意进行软件维护的工作。
2)新的开发人员融入团队的时间比较长:
除了没有良好的培训、文档等有效的机制以外,每个人一套的编码风格,也容易造成新成员对于已有代码的理解不够,甚至出现偏差。
编码规范,作为解决以上问题的方案已经得到了很长时间的应用。而在产品或者项目实际开发的过程中,仅有Code Conventions是不能解决Code的问题的。它往往和Code Review配合,作为代码质量保证的手段。
1.1. Code Review的层次与内容
Code Review就是审查代码的质量。根据形式分为两种,一种是交叉代码审查,就是自己的代码由他人来检查,就象检查作业一样;另一种是代码会审,就是以会议的形式,大家共同审核代码的质量。
Code Review 的目的有:
·在项目早期就能够发现代码中的BUG;
·帮助初级开发人员学习高级开发人员的经验,达到知识共享;
·避免开发人员犯一些很常见,很普通的错误;
·保证项目组人员的良好沟通;
·项目或产品的代码更容易维护;
一般情况下,Code Review的内容与层次如下:
·编码风格与代码规范一致性:检查代码是否符合编码规范,确保所有人写的代码基本一致;
·代码满足基本的功能要求:检查代码的逻辑实现,以及单元测试的编写策略,确认实现功能性需求;
·代码满足性能等非功能性需求:非功能性需求一般不便于测试,需要借助一定的工具和Review人员的素质,针对编码中对于性能影响的瓶颈给出解决方案;
·去除冗余,提高代码可读性:适当使用 Refactorying技术,去除代码中的Bad Smell;如果有需要,可以Refactorying to Pattern。
1.2. Code Conventions的尴尬境地
从Code Review的层次分析中我们可以看到,Code Conventions是其基础。而实际的情况是,在软件开发中,两者都沦为“宣传口号”,而非切实执行的实践。
造成这种情形的原因有二:
1. Code Conventions是开发过程的“道德”而非“法律”:很多时候,由于没有有效的工具或者辅助手段的支持,是否遵守编码规范是依靠开发人员的“道德素养”-自觉遵守,而非实际考核的指标;
2. Code Review的基石不牢:在第一种原因的影响下,Code Review执行的过程中,如果花费了大量的时间在代码规范的检查上,那么对于更为重要的程序执行逻辑、性能、易读性等的评审投入的精力就有限的;而这种情况反过来也使得对于编码规范的检查,通常都是走过场。最后,还是每个人一套规范,只要最终交付的产品完成指定的功能就可以啦。