C/C++高质量编程(二)命名规则与表达式

来源:互联网 发布:c语言获取当前时间戳 编辑:程序博客网 时间:2024/05/16 05:54
上一篇讲述的是头文件与代码行的一些基本规则,本篇文章给出命名规则表达式与基本语句的规则。

命名规则:

 1.  标识符应该直观而且可拼读,让人望文生义,减少读者不必要的思考量,最好采用英语单词,方便阅读,切忌使用汉语拼音来命名(由于鄙人的英语水平不高,在此之前喜欢用汉语拼音命名),当然,英文单词要准确,不能胡乱配对;

 2.标识符的长度应当符合“min-length && max-information”原则,即用较少的字符表示最大的信息量,当然,要表达清楚;

 3.命名规则通常与所在操作系统与开发工具风格保持一致,不要混在一起,如windows采用大小写混排:AddChild,Unix采用小写加下划线:add_child。
 
 4.程序中不要出现只用大小写区分的标识符如:x和X;

 5.程序中的变量名不要完全相同,且变量名字使用名词,或者形容词加名词;
 
 6.变量和参数用小写字母开头单词组成,常量可全用大写字母,用下划线分割单词。

表达式和基本语句:
一、运算符的优先级及其结合律
 
  如果代码行中运算符较多,应当用括号确定表达式的执行顺序,增强可读性,毕竟记住表格中的内容有一定困难;
 
二、复合表达式

  切忌编写太复杂的复合表达式以及功能多的表达式,如:
 
I = a >= b && c < d && c + f <= g + h;d = (a = b + c) + r;


三、if语句

  不能将布尔变量直接与TURE、FALSE、或者1、0进行比较,布尔类型FLASE为0,即为假,非零值则为真TURE;如:
if (flag == TURE) //flag为布尔变量if (flag == 1)              

 
  整型变量用“==”或“!=”直接与0比较,不要和布尔变量搞混;
 
  浮点变量不能用“==”或“!=”与任何数字比较,如 if (x == 0.0);
 
  指针变量用“==”或“!=”与NULL比较,不能与0比较,NULL不能被赋值;

四、循环语句的效率

  提高循环体效率的基本办法是降低循环体的复杂性

 1. 在多重循环中,将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨循环层的次数:
for (col=0; col<5; col++){        for (row=0; row<100; row++)        {                                  .....(1)            sum = sum + a[row][col];        }}

for (row=0; row<100; row++){ for (col=0; col<5; col++) { .....(2) sum = sum + a[row][col]; }}
如上,(1)的效率就比(2)高,长循环在内层。
 
2. 如果循环体内有逻辑判断,并且循环次数很大,应该将逻辑判断移到循环体外面,提高效率,当然,循环次数小,则不影响;

五、for语句的循环控制变量

1. 不可以在for语句的循环体内修改循环变量,防止for循环失去控制;

2. 最好将for语句的循环控制变量取值采用“半开半闭区间”写法。如“0 =< x < N”而不是“0 =< x <= N-1”

六、switch 语句

  switch有多分支选择语句,这是它存在的理由。
swicth (varlable){   case value1:   ...                        break;   case value1:   ...                        break;   ...         default:  ...                        break;}
每个case语句的结尾不要忘了break,除非故意使多个分支重叠;

不要忘了最后的default分支,无论什么情况都应该保留语句 default:break。

七、goto语句
 
  goto语句可从多重循环体中一下子跳到外面,用不着写很多次的break语句,但是我们尽量少用,慎用goto语句。


下篇文章将粗略介绍常量,详细说明函数的规则。



1 0
原创粉丝点击