1.什么让代码变得更好?
1)可读性的基本原理:代码的写法应当使别人理解它所需的时间最小化。
这里的别人也包含6个月后的你自己,因此代码并不是越小越好。
这个可读性的目标会与代码高效,良好架构或者易测试等目标有冲突吗?本书的作者认为根本不会,也就是说你可以在保证代码其他目标的同时让代码易读。
保证代码的可读性需要花额外的时间,但是这也会让你成为一个更好的程序员,让代码的bug更少,让你的代码更受欢迎。
示例1:
1 //正面例子 2 for (Node* node = list->head; node != NULL; node = node->next) 3 Print(node->data); 4 5 //反面例子 6 Node* node = list->head; 7 if (node == NULL) return; 8 while (node->next != NULL) { 9 Print(node->data); 10 node = node->next; 11 } 12 if (node != NULL) Print(node->data);
示例2:
1 //反面例子:更紧凑 2 return exponent >= 0 ? mantissa * (1 << exponent) : mantissa / (1 << -exponent); 3 4 //正面例子:更直白 5 if (exponent >= 0) { 6 return mantissa * (1 << exponent); 7 } else { 8 return mantissa / (1 << -exponent); 9 }
示例3:
1 //反面例子 2 assert((!(bucket = FindBucket(key))) || !bucket->IsOccupied()); 3 4 //正面例子:更易懂 5 bucket = FindBucket(key); 6 if (bucket != NULL) assert(!bucket->IsOccupied());
示例4:
1 //正面例子:加了一行注释使代码更易懂 2 // Fast version of "hash = (65599 * hash) + c" 3 hash = (hash << 6) + (hash << 16) - hash + c;