大多数程序员依靠直觉和灵感来决定如何编程。我们都知道这样的代码:
for (Node* node = list->head; node != NULL; node = node->next)
Print(node->data);
比下面的代码好:
Node* node = list->head;
if (node == NULL) return;
while (node->next != NULL) {
Print(node->data);
node = node->next;
}
if (node != NULL) Print(node->data);
(尽管两个例子的行为完全一样)
但很多时候这个选择会更艰难。例如,这段代码:
return exponent >= 0 ? mantissa * (1 << exponent) : mantissa / (1 << -exponent);
它比下面这段要好一些还是差一些?
if (exponent >= 0) {
return mantissa * (1 << exponent)
} else {
return mantissa / (1 << -exponent);
}
很显然,第一个例子虽然是一行代码,但是没有下边这个例子清晰可读。
可读性的关键思想是:代码的写法应当使别人理解它所需的时间最小化。
代码好不好不是说代码量越小越好,也不是说使用的方法越高级越好,而是别人理解它所使用的时间越短越好。
如果你写了一些不容易理解的代码,这样别人就会很费力的才能看明白,当然,等过一段时间之后,你自己也会很费解。