好的编程风格
- 将声明和定义分开写
- ‘{’ ‘}’应独占一行并同一列
- 尽可能不要使用全局变量
- 定义变量的时候要同时初始化变量,防止出现不可预测的结果。
- 修饰符‘*’和‘&’应更靠近变量名。eg:int * x,y,就不能唯一确定x和y的类型,应将 *和x离的更近一些。
- 书写类的时候,将public(函数)放在private(数据)之前,更加清晰函数功能。
- 在类定义中定义常量用枚举,不占用对象的存储空间。(有最大值且默认整型)
- C中定义常量用define,C++中定义常量用define和const且多用const。
- C++要调用C的函数可以用 extern"C" ,连接交换制定符号。
命名风格
- windows系统下风格:大小写。eg:MyStrlen
linux系统下风格:下划线小写。eg:my_strlen - 类名和函数名用大写字母开头。
- 常量用全大写字母命名,下划线分割单词。eg:const NEW_NUM
- 静态变量加s。eg:static s_age
- 全局变量加g。eg:g_num
头文件
头文件可以加强类型安全检查,应包括:
- 版权和版本声明。
- 预处理:为了防止文件重复引用,使用ifndef/define/endif。
- 函数、类的声明。
循环语句
if语句
- BOOL变量与0比较
正确:
if(flag)
if(!flag)
错误:
if(0 == flag)
- 浮点型变量与0比较
正确:
if((x>=-EPSINON) &&(x<=-EPSINON))
错误:
if(0 == x)
- 指针变量与0比较
正确:
if(NULL == p)
if(NULL != p)
错误:
if(p)
if(0 == p)
for语句
- 取值采用"半开半闭"
for(i=0; i<N ; i++)//间隔为N 循环N次 ;简洁明了
for(i=0; i<=N; i++)//间隔为N-1 循环N次;
switch语句
- 每个case语句后不要忘记加break,避免多个分支语句重叠,不要忽略default语句分支。
函数
- 功能函数结果返回值建议用数字表示,增强可移植性。
- 正确的值用参数返回,错误的值用return语句获得。
- 函数调用时,返回值类型不可省略。eg:getchar()返回类型为int。
- 函数定义时,用于排错处理的返回值不可省略,增加程序的健壮性。
- 函数参数缺省只能在函数声明中。
指针
- 野指针:没有初始化,释放指针时没有将其设置为NULL,指针操作超越了变量的作用域。
- 用完指针不要忘记释放内存,并将其赋为NULL。(防止”野指针”)
- new/delete 不是库函数,与sizeof()类似是个操作符。
new相当于 构造函数+malloc(初始化+申请内存)
delete相当于 析构函数+free (清除工作+释放内存) - 内存耗尽处理方法:
1.判断指针是否为NULL,如果是则用return终止函数或者exit(1)终止坏的程序。
2.为new和delete设置异常处理函数。
待更……