1.版权和版本
好的程序员会给自己的每一个文件和函数都注明版权和版本;比如文件头部应该有这样的注释:
/******************************************************
* 文件名:hello.cpp
* 文件描述:提供一个打印hello world的函数
* 创建人:jinNiu.Yang
* 创建时间:2021/12/15
* 版本号:1.0
* 修改记录:
******************************************************/
函数应该有这样的注释:
/******************************************************
* 函数名:XXX
* 参数:
* 功能描述:
* 返回值:
* 抛出异常:
* 作者:
******************************************************/
2.缩进、空格、换行、空行
- 缩进:一个缩进一般是一个TAB键;
- 空格:在语句中各个操作符之间加空格;函数传参时在各个参数间加空格;
- 换行:不同语句之间换行;函数参数多时换行;
- 空行:程序块之间,最好加上空行;
3.注释
一般来说你写这些地方的注释:文件、函数、变量(用来干嘛)、算法、功能块;
4.函数的入参和返回值
写有参数的函数时,首要工作,就是要对传进来的所有参数进行合法性检查;对于返回值也一样;比如入参是指针就要考虑为空指针的情况,当然,在c++中使用引用比使用指针要好的多;返回值是指针也一样。
一般当入参或返回值多于6个就应该使用结构体,返回值也一样;这样要是要增加数量的话,可以不用改函数,直接改结构体就行;
5.if语句对出错的处理
if语句处理错误时,不要使用else,而是先判断错误,比如下面例子:
if(a == 0) if(a != 0)
....... ------------>> 出错处理
else return;
出错处理 .........
6.头文件防止多次编译
头文件中千万不要忘了防止多次编译,一般格式为(比如stdio.h):
#ifndef _STDIO_H_
#define _STDIO_H_
..........
#endif
7.在堆上分配内存
malloc或new函数是从堆上分配内存,系统不会自动释放,需要自己手动释放,不然会产生内存泄漏(Memory Leak);然后系统可以分配的堆内存越来越少,直到系统崩溃;以下有几个注意的点:
- 谁申请谁负责释放;类、函数
- malloc分配的内存一定要初始化,free后指针一定要置为null;
- 虽然现在操作系统都会帮助我们释放,但也不会释放掉所有的,最好还是自己释放;IBM公司的工具Purify可以帮助我们检查Memory Leak;
8.标识符命名(函数名、变量名)
- 见名知意,要最短长度也要最大限度表达其含义;
- 可以简写,但也要让人看得明白:ErrorCode–>ErrCode;
- 用匈牙利命名法命名函数参数、局部变量;用驼峰命名法命名全局变量、静态变量;
- 与标准库(如:STL)或开发库的命名风格保持一致;
9.修改别人程序的修养
当维护别人的代码时,不要主观臆测的把已有程序删除或修改,可以注释掉再添加自己的代码;这样好恢复,也是对原作者的一种尊敬;
10.将相同或近乎相同的代码形成函数和
如果有一些程序的代码段很相似甚至直接一样,就可以将其放入一个函数中直接调用;如果代码不多,就可以把它写成宏函数;
11.函数中的代码尺寸
一个函数只完成一个具体的功能,一般来说,一个函数代码最好在100行到300行左右;有证据表明,一个函数代码超过500行,就会有与之前代码重复或相近的代码;
12.为常量声明宏
最好不要在程序中出现数字式的“硬编码”,如:int user[120];应该为120声明一个宏,这样维护性会高,要改所有引用120的地方,只需要修改宏就好;
13.不要忽略Warning
就算Warning不会妨碍目标代码的生成,但是请不要忽视他们,修正每一个Warning是一个有修养的程序员应该做的事;