第8章 运算符相关编码准则

2019-08-03  本文已影响0人  FelixDai

8.1 恰当应用条件运算符有助于提高可读性

8.2 不要凭借运算符优先级排列算式

8.3 指针运算符应该紧接变量名

指针的定义方法有三类:

int* x;  // 数据类型后紧接*
int *x;  // 变量名前紧接*
int * x; // 数据类型和变量名中插入*

按照第一种方法可以写为如下形式:

int* x1, x2, x3;

以这种形式声明时,程序员会误以为x1, x2, x3都是指针,但实际并非如此,x2, x3是int型变量。
第三种方法和第一种一样,可能造成混淆。故第二种方法教其他方法简明又准确。

8.4 慎选移位运算,多用算术运算

移位运算比乘法运算更快,常用于需要极端快速运算的情况。
但移位运算也存在问题:

  1. 操作数为负数时,向左移位可能丢失负数的符号
  2. 程序难以理解

如果不是为了追求极端的效率,那么应该始终编写可读性高、便于理解的程序。

8.5 不要追求极端效率

追求极端效率的人常常为了追求更快的处理速度而编写特别复杂的语句,但维护成本绝不会低。
虽然效率很重要,但它并没有重要到值得牺牲代码的可读性,尤其在当今时代,计算机内存充足、CPU速度快如闪电,完全没必要执着于20世纪80年代的编码方式。

笔者是效率党,笔者认为虽然“当今时代的计算机内存充足、CPU速度快如闪电”,但目前市面上的各种游戏、硬件接口(驱动)程序和应用软件仍然存在“负优化”或是运行不畅的情况。此书中拿Linux操作系统的源码为例说明这种“投机取巧”的情况,笔者持消极态度。追求效率确实是会造成可读性大大降低,但是完全可以通过注释和技术文档等说明性文本帮助维护者理解代码含义。影响维护进度的主要原因是:代码编写者的思维方式和意图不能够完整、准确地传达给维护者

上一篇 下一篇

猜你喜欢

热点阅读