文章目录
函数、变量、类等命名
--------------------------------
函数、变量、类等命名
--------------------------------
-
新建文件夹和文件以小写字母开头, 多个单词采用驼峰命名法(xxYyyZzz).
-
局部变量,函数名以小写字母开头, 多个单词采用驼峰命名法(xxYyyZzz).
-
宏定义以下划线区分的多个全大写单词(XXX_YYY_ZZZ), 宏定义后的内容用括号括起来.
-
静态变量定义以小写g_开头,后面的命名采用驼峰命名法, 第一个单词小写字母开头(g_xxxYyyZzz).
-
struct结构体名字以大写字母开头, 多个单词采用驼峰命名法(XxxYyyZzz).
-
enum结构的名字以大写"E"开头紧随后面的第一个单词以大写字母开头, 多个单词采用驼峰命名法(EXxxYyyZzz).
-
GNU项目如Linux内核开发, 仍采用GNU命名法.
-
标识符的命名要清晰, 明了, 有明确含义, 尽可能使用完整的单词或大家基本可以理解的缩写, 避免使人产生误解.
-
对于变量命名,禁止取单个字符(如i 、j 、k), 建议除了要有具体含义外, 还能表明其变量类型, 数据类型等,但i, j, k作局部循环变量是允许的.
-
应尽量用纯英语做命名, 不要用汉语拼音, 英汉混杂, 姓名, 数字或较奇怪的字符来定义标识符.
-
指针命名以小写p开始.
-
模块中函数, 结构命名中都要包含模块的名称或缩写.
-
类中数据成员 要以m_xxYyyZz 起头。
注释
-------------
注释
-------------
-
宏定义, 函数, 静态变量, 重要的局部变量必须增加中文注释.
-
struct结构和其中的成员, enum结构和其中的成员必须增加中文注释, 取值范围,根据情况注释放在成员变量的右面或上面, 参考下面的样例.
-
函数中代码段必须增加注释.
-
程序中进行特殊处理或逻辑比较复杂的点必须增加注释.
编码规范
-------------
编码规范
-------------
-
缩进是4个空格, 如果使用TAB键, 请将编辑器TAB键转换为4个空格.
-
局部变量, 静态变量在声明时必须初始化.
-
尽量使用libc提供的防止越界的库函数.例如: strncpy, snprintf等.
-
函数入参必须进行合法性验证.
-
指针,数组下标在使用时必须进行合法性验证.
-
函数的退出点只能有一个, 在函数结尾, 函数中间不能存在return, 函数退出前销毁函数申请的内资源.
-
在使用goto时只能向下goto,禁止向上goto.
-
写完代码后必须去除新增代码的所有warning.
-
指针或句柄在释放时先验证合法性,如果是合法的在进行释放,指针释放后必须置NULL,句柄释放后必须置非法(-1).
-
换行时增加换行符"".
-
控制每行的长度不要过长, 起码不能超过100列,操作符在新行之首.
-
如果函数名+入参太长,请参考下面"fsDoClose()"函数写法.
-
每个模块要区分内部函数和外部函数,内部函数增加static描述.
-
宏在定义时,后面的值或表达式必须使用括号, 字符串除外.
-
switch后必须有default.
-
程序运行过程中的异常必须输出调试信息.
-
if和else后必须增加"{}", 且"{}"必须单独占一行, 不能因为后面只有一行就直接写.
-
程序中不要使用立即数, 如果必须使用请注释上原因和含义.
-
需要使用空行区分不同的代码段, 不能连着写下来.
-
程序中不能使用全局变量.
-
结构体变量不能和结构体名称类似.
-
条件语句比较复杂时, 应尽可能用括弧分离各表达式, 出现赋值语句必须添加括弧,与常量做"相等"比较时, 常量前置.if(NULL == (fp=(fopen(fileName, “rb”)))
-
操作符前后加空格, 逗号后面增加空格. i = 1 + 2; int a = 1, b = 2;
文件编码
-------------
文件编码
-------------
统一使用UTF-8格式