- 代码的写法应当使别人理解它所需的时间最小化。
- 尽管减少代码行数是一个好目标,但把理解代码所需的时间最小化是一个更好的目标。
- 理解代码所需的时间并不与其他目标有冲突,在你犹豫不决时,可读性基本定理总是先于本书中任务其他条例或原则。
- 把信息装到名字里,把名字当做一条小小的注释。
- 避免像tmp和retval这样泛泛的名字,tmp这个名字只应用于短期存在且临时性为其主要存在因素的变量。
- 如果你养成多花几秒钟想出个好名字,你会发现你的『命名能力』很快提升。
- 如果你的变量是一个度量的话(如时间长度或者字节数),那么最好把名字带上它的单位。
- 在小的作用域里可以使用短名字。
- 要多问自己几遍:『这个名字会被别人解读成其他的含义吗?』
- 推荐用min和max表示(包含)极限,命名极限最清楚的方式是在要限制的东西前加上max_或者min_。
- 推荐使用first和last来表示包含的范围。
- 推荐用begin和end来表示包含/排除范围。
- 通常来讲,加上is、has、can或should这样的词,可以把布尔值变得更明确,最好避免使用反义名字。
- 一致的风格比『正确』的风格更重要。
- 注释应该尽量包含『做什么』、『怎么做』和『为什么』。
- 比较的左侧,『被问询的』表达式,它的值更倾向于不断变化;比较的右侧,用于作比较的表达式,它的值更倾向于常量。
- 对于三目运算符,如果不是从两个简单的值中做选择,尽量不要用三目运算符,相比于追求最小化代码行数,一个更好的度量方式是最小化人们理解它所需的时间。
- 使用德摩根定理拆分长的表达式:
not( a or b or c ) == (not a) and (not b) and (not c)
not( a and b and c ) == (not a) or (not b) or (not c)
.