是什么让Google的程序如此优秀
让Google的程序如此优秀的一个最重要的事情看起来是非常的简单:代码审查
在Google,没有程序,任何产品、任何项目的程序代码,可以在没有经过有效的代码审查前提交到代码库里。
从代码审查里能得到什么?
•在代码提交前,用第二群眼睛检查一遍,防止bug混入。这是最常见的理解,也是它最不重要的一点。
•代码审查的最大的功用是纯社会性的。如果你在编程,而且知道将会有同事检查你的代码,你编程态度就完全不一样了。你写出的代码将更加整洁,有更好的注释,更好的程序结构——因为你知道,那个你很在意的人将会查看你的程序。
•还有一个非常重要的好处。代码审查能传播知识。通过代码审查,至少会有两个人熟悉这些程序——作者,以及审查者。审查者并不能像程序的作者一样对程序十分了解——但他会熟悉程序的设计和架构,这是极其重要的。
代码审查最重要的一个原则:代码审查用意是在代码提交前找到其中的问题——你要发现是它的正确。在代码审查中最常犯的错误——几乎每个新手都会犯的错误——是,审查者根据自己的编程习惯来评判别人的代码。
代码审查的第二个易犯的毛病是,人们觉得有压力,感觉非要说点什么才好。如果你总是力图找出一点什么东西来批评,你这样做的结果只会损害自己的威望。你的评论将不再被人重视。
第三是速度。你不能匆匆忙忙的进行一次代码审查——但你也要能迅速的完成。你的同伴在等你。
Review的概念
›在软件开发过程中邀请同行对工作产品进行审查,以图尽早查找出工作产品缺陷,进行质量控制的的一种质量活动。
Review的意义
›降低返工(rework)的成本。
›越早开展对项目越有价值,推荐开展100% review,在代码完成一个类/函数和文档完成一个Story的分析设计时进行一次review。
代码审查九字真言:
1. 看见了If,就想Else。
2. 看见malloc,就去找Free。
3. 函数调用要小心,需要看看返回值。
4. 看到for循环,就找边界值。
5. 看见return要注意,要去前面找资源。
6. 看见数组把神提,问题往往在下标。
7. 不要小看字符串,长度是个大问题。
8. 得到函数不要急,看看变量初始化,各种路径要小心。
9. 赋值函数最危险,变量没有初始化。
九句句真言不孤立,相互结合显神威。
下面总结了在一个简单列表中最容易保持的11项实践方式:
1、一次评审少于200--400行的代码。
2、目标为每小时低于300-500LOC的检查速率。
3、花足够的时间进行正确缓慢的评审,但是不要超过60-90分钟。
4、确定代码开发者在评审开始之前就已经注释了源代码。
5、为代码评审和获取制度建立可定量化的目标,这样您才能改进流程。
6、使用检查列表,因为它可以极大地改进代码开发者和评审者得作品。
7、确认缺陷确实得到修复了。
8、培养良好的代码评审文化氛围,在这样的氛围中搜索缺陷被看做是积极的活动。
9、警惕“老大哥”效应。(作为一个开发员,您可以自动假设“老大哥正看着您呢”是真的,如果评审制度是由评审支持工具自动评价的,更是这样的。)
10、最少评审一部分代码,就是您不能评审全部的代码,以从Ego Effect(自我效能感)中受益。
11、采用轻量级,能用工具支持的代码评审。
Review的概念与意义