代码评审
代码评审是一种系统的对别人代码的研究,和论文审校很类似。
代码评审有两个主要目的:
- 提升代码质量。 找出存在及潜在的bug,分析代码的清晰度以及代码是否严格遵循了当前工程的标准。
- 提升程序员的水平。 代码评审是提升程序员水平的一个重要方法,通过它可以学习到语言新的特性、工程上新的设计以及一些新的实现方法。特别是在开源项目中,很多交流都是在代码评审这种环境下进行的。
代码评审已经在开源项目中运用很深了,例如Apache 和 Mozilla. 同样的,代码评审在工业界也应用很广,在Google,如果你的代码没有另一个程序员的评审签字,你是没办法将它提交的。
风格标准
大多数公司或者大的项目都会要求代码风格具有统一的标准。这些标准可能会非常细化,例如缩进应该是几个空格,花括号应该怎么对齐。这些问题上的争论通常会导致 神圣的战争 (译者注:例如vim和emacs哪一个更好),毕竟它们关乎于个人的口味或者审美观。
在本门课程中,我们对代码风格没有一个统一的要求。如果你是刚开始写Java,我们推荐你遵循 Google Java Style ,它在工业界运用的很广,可读性也不错,例如:
if (isOdd(n)) {
n = 3*n + 1;
}
- 在关键词(
if
)后面留空格,但是在函数调用(isOdd
)后不留空格 - 在行的末尾写
{
,而}
自己单独一行 - 无论是空块还是只有一行,都要用
{
…}
包括起来
不过,我们不会要求你遵循花括号的放置风格,毕竟每个程序员都有自己的口味。但是要注意,一旦遵循某一种风格后就要一直这样写,不要一会这样一会那样。同时,应该优先遵守所在项目规定的风格,如果你在进行代码评审的时候擅自改动别人的代码风格,你的搭档会恨死你的;)总之,团队合作优先。
同时,有一些代码风格是跟我们这门课程的三个目标息息相关的(译者注:远离bug、易读性、可改动性),它们可不止花括号放在哪这么简单。这篇阅读的剩下部分将探讨这些规则,而你在进行代码评审或是自己写代码的时候也应该注意这些规则。但是,代码评审可不仅仅是看别人的代码风格,我们在后续的课程还会讲到很多别的事情,例如规格说明、抽象数据类型、并发编程和线程安全等等,这些都是代码评审的原材料。
别写重复的代码(Don’t Repeat Yourself)
重复的代码很不安全。如果你在两个地方放置了相似的代码,那么一个最基本的风险就是如果一处出现了bug,另一处也非常可能有bug。而修复的时候经常只会修复一个地方而忽略了另一个地方。
避免重复就像你过马路的时候要避免被车撞一样。赋值-粘贴在编程中是一个很大的诱惑,而你在使用它的时候,“皮肤应该感觉到危险而震颤”。(译者注:这描述也是醉了)
别重复代码(Don’t Repeat Yourself,)简称为DRY,现在已经成为了编程人员的一句咒语。
译者注(来自维基百科):
一次且仅一次(once and only once,简称OAOO)又称为Don't repeat yourself(不要重复你自己,简称DRY)或一个规则,实现一次(one rule, one place)是