一、代码规范的目标准则
(1)代码简洁精炼,美观,可读性好
(2)高效率
(3)高复用,可移植性好
(4)高内聚,低耦合
(5)没有冗余
(6)规范性,代码有规可循。
(7)特殊排版、特殊语法、特殊指令,必须特别说明
二、头文件包含
先系统头文件,后用户头文件。
系统头文件使用:#include <xxx.h>
自定义同文件使用:#include "xxx.h"
这两种写法就告诉编译器寻找头文件的优先路径,是从系统目录查找,还是从自定义目录查找。
对于不同路径下的头文件目录包含可使用如下的方式
#include "./xxx.h" 头文件在当前目录查找(当前目录是指当前C、C++程序所在的目录)
#include "../xxx.h"头文件在上一级目录查找
#include "somedir/xxx.h"头文件在当前目录的下一级目录查找
#include "../somedir/xxx.h"头文件在上一级目录的一个目录下查找
我们在编写程序时尽量只引用我们用到的头文件,以免给后续看代码的人员造成麻烦。
三、cpp文件和.h文件的常用规则
文件的名称通常为首字母大写或全部小写如:Show.cpp或show.cpp
除了特殊情况外,头文件应使用#ifndef控制块
#ifndef ADD_H
#define ADD_H
//执行定义
#endif //ADD_H (加入ADD_H代表此endif代表该部分的定义结束)
头文件中的内容顺序:包含代码块(#include),宏定义代码块(# define),全局变量,全局常量(const),类型定义(typedef),类定义(class),内联部分(inline)
Cpp文件中的内容顺序:包含指令,宏定义,全局变量,函数定义。
四、注释方面
(1)文件头注释:作者,文件名称,文件说明,日期和版本(可选),修改和维护说明(可选)
(2)函数注释:关键函数必须写上注释,说明函数的用途。
(3)函数注释:特别函数参数,需要说明参数的目的,由谁负责释放等等。
(4)函数注释:除了特别情况,注释写在代码之前,不要放到代码行之后。
(5)函数注释:对每个#else或#endif给出行末注释。
(6)函数注释:关键代码注释,包括但不限于:赋值,函数调用,表达式,分支等等。
(7)函数注释:尚未实现完整的代码,或者需要进一步优化的代码,应加上 // TODO ...
(8)函数注释:调试的代码,加上注释 // only for DEBUG
(9)函数注释:需要引起关注的代码,加上注释 // NOTE ...
(10)函数注释:对于较大的代码块结尾,如for, while, do等,可加上 // end for|while|do
五、命名方面
(1)同一性:在编写一个子模块或派生类的时候,要遵循其基类或整体模块的命名风格,保持命名风格在整个模块中的同一性。
(2)标识符组成:标识符采用英文单词或其组合,应当直观且可以拼读,可望文知意,用词应当准确,避免用拼音命名。
(3)最小化长度 && 最大化信息量原则:在保持一个标识符意思明确的同时,应当尽量缩短其长度。
(4)避免过于相似:不要出现仅靠大小写区分的相似的标识符,例如"i"与"I","function"与"Function"等等。
(5)避免在不同级别的作用域中重名:程序中不要出现名字完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但容易使人误解。
(6)正确命名具有互斥意义的标识符:用正确的反义词组命名具有互斥意义的标识符,如:"nMinValue"和"nMaxValue","GetName()"和"SetName()"
(7)避免名字中出现数字编号:尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。这是为了防止偷懒,不肯为命名动脑筋而导致产生无意义的名字(因为用数字编号最省事)。