C/C++编程小细节(一)
根据《高质量C++/C编程指南》摘录和整理。
《高质量C++/C编程指南》的作者为林锐。
书来源:Mooc上西安交大的《计算机程序设计(C++)》。
此篇博文意欲摘录要点,记笔记,有些是书上原话也有些根据自己情况概括。因为初学,所以书上有些东西都不了解,以后应再读一遍该书。
2018年11月末
- 一行代码做一件事,如只定义一个变量。
- if、for、while、do 等语句自古占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{}。这样可以防止书写失误。
- 空格 VS 2018自带空格规范,语句写完写 ‘;’ 时就会加上空格,如果改了语句,那么把 ‘;’ 删了重新打,规范的空格又会出现。
- 对齐 ‘{’ 和 ‘}’ 应独占一行并且位于同一列,同时与引用它们的语句左对齐。
- 应当将修饰符 ‘*’ 和 ‘&’ 紧靠变量名,*a 。
- 将代码快速变成注释状态快捷键。
注释:Ctrl+k+c,解注释:Ctrl+k+u; - 类的板式 先public后private。//现在不懂以后注意
- 命名规则 Windows下采用“大小写”混排的方式,如AddChild。而Unix应用程序的标识符通常采用“小写加下划线”的方式,如add_child。
//多注意,自己之前不知道有这种规则,都是用下划线 - 程序中不要出现紧靠大小写区分的相似标识符。
//多注意,自己经常这么用,而且注释也不给,虽然自己看的懂 - 程序中不要出现标识符完全相同的局部变量和全局变量。
- 变量名字应当使用“名词”或者“形容词+名词”。
float value;
float oldValue;
float newValue;
- 尽量避免名字中出现数字编号,如Value1,Value2 等,除非逻辑上的确需要编号。用数字编号最省事,不要这么偷懒
- 简单的Windows应用程序命名规则 类名和函数名用大写字母开头的单词组合而成。
class Node; //类名
class LeafNode; //类名
void Draw(void); //函数名
void SetValue(int value); //函数名
- 常量全用大写字母,用下划线分割单词。
const int MAX = 100
const int MAX_LENGTH = 100;
- 静态变量加前缀 s_; 全局变量加前缀 g_; 类的数据成员加前缀 m_(表示member)。
- 如果代码中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。
//还是加括号的好,省的出错 - if 语句 不可将布尔变量直接与TURE、FALSE 或者 1、0 进行比较。根据布尔类型的语义,零值为“假”(记为 FALSE ),任何非零值都是“真”(记为 TURE )。
假设布尔变量名字为flag,它与零值比较的标准 if 语句如下:
if (flag) // 表示 flag 为真
if (!flag) //表示 flag 为假
整型变量与零值比较,不可模仿布尔变量的风格写。
浮点型变量与零值比较,
if (x == 0.0) //隐含错误的比较
if ((x>=-EPSINON) && (x<=EPSINON) //其中 EPSINON 是允许的误差(即精度)
- 指针变量与零值比较
if (p == NULL) // p 与 NULL 显示比较,强调 p 是指针变量
if (NULL == p) // 有意这样写,防止少写 ' = ',而且少写 ' = ' 程序会报错
//是否其他比较时也可以这样写?如:if (0 == x)
- 多重循环中,如果有可能,应当将最长的循环放最内层,最短的循环放最外层,以减少 CPU 夸切循环层的次数。
- 如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。