全局变量要有较详细的注释,包括对基功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。
示例:
1 /* The ErrorCode when SCCP translate.Global Title failure,as follows*/ 变量作用 2 3 /*0 - SUCCESS 1 - GT Table error 2 - GT error others - no use*/ 变量取值范围 4 5 /*only function SCCPTranslate()in this modual can modify it,and other*/ 使用方法 6 7 /*modual can visit it through call the function GetGTTransErrorCode()*/ 8 9 Byte g_GTTranErrorCode;
在程序块的结束行加注释标记,以表明程序块的结束。
例:
1 //end of for() 2 3 //end of if(flg) 4 5 //end of while(MAX_MIN)
标识符缩写
较短的单词可通过去掉“元音”形成缩写,较长的单词取单词的头几个字母形成缩写,一些单词有公认的缩写:
temp -> tmp flag->flg
statistic -> stat increment -> inc
message -> msg
不要设计面面俱到,非常灵活的数据结构。容易引起误解和操作困难。
尽量用乘法或其它方法代替除法,特别是浮点运算中的除法。
说明:浮点运算除法要占用较多的CPU资源。
示例:
1 #define PAI 3.1416 2 radius = circle_length/(2*PAI);
可以改写成:
1 #define PAI_RECIPROCAL (1/3.1416) 2 radius = circle_length*PAI_RECIPROCAL/2;
过程/函数中申请的(为打开文件而使用的)文件句柄,在过程/函数退出之前要关闭。
说明:分配内存不释放以及文件句柄不关闭是较常见的错误。往往引起严重的后果。
使用宏时,不允许参数发生变化
例:
1 #define SQUARE(a) ((a)*(a)) 2 int a = 5; 3 int b; 4 b = SQUARE (a++);// a = 7 ,执行两次自增
正确的用法是:
1 #define SQUARE(a) ((a)*(a)) 2 int a = 5; 3 int b; 4 b = SQUARE (a); 5 a++;//a=6
不可将布尔变量直接与TRUE,FALSE或者1,0进制比较。
TRUE的值究竟是什么值并没有统一的标准。例如,visual c++将TRUE定义为1,而visual basic则将TRUE定义为-1.
正确使用:
if(flg)
if(!flg)
类中的常量定义
例:
1 class A 2 { 3 ... 4 const int SIZE = 100;//error 5 int array[SIZE];//error 6 };
类中的常量用类中的枚举常量来实现。
1 class A 2 { 3 ... 4 enum{SIZE1 = 100, SIZE2 = 200}; 5 int array1[SIZE1];//OK 6 int array2[SIZE2];//OK 7 };
时间: 2024-11-10 11:12:15