文章目录
1、命名约定1.1 通用 命名规则1.2 文件名 命名规则1.3 变量 命名规则1.4 类型 命名规则1.5 函数 命名规则1.6 枚举 命名规则1.7 宏 的命名规则
2、函数3、质量保证4、程序效率5、注释命名的 常用缩写
1、命名约定
1.1 通用 命名规则
函数命名,变量命名,文件命名要有描述性,少用缩写。 注意,一些特定的广为人知的缩写是允许的,例如用i表示迭代变量(iteration)和用T表示模板参数(template)。
目前主要有 4种命名风格:
序号类型描述1驼峰 命名法首字母小写,每个逻辑断点都用大写字母来标记一般用于全局变量,函数、结构体变量、对象名示例:myData2帕斯卡(Pascal)命名法与驼峰命名法类似,只是 首字母大写一般用于结构名、类名示例:MyData3下划线 命名法函数名中的每个逻辑断点都用下划线 _分割C程序和UNIX这样的环境中,它的使用非常普遍一般用于函数、变量示例:my_data4匈牙利 命名法变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域、类型等示例:i_MyData
1.2 文件名 命名规则
文件名要全部小写,可以包含下划线 _或连字符 -,,依照项目的约定。如果没有约定。那么下划线 _更好。 例如:my_useful_class.c
1.3 变量 命名规则
变量(包括函数参数) 和数据成员名一律小写,单词之间用下划线 _连接。 类的成员变量以下划线结尾,但结构体的就不用。
序号类别举例1局部变量,函数参数local_variable2结构体内的变量struct_data_member3类的成员变量class_data_member_
1.4 类型 命名规则
所有类型命名:类,结构体,类型定义(typedef),枚举,类型模板参数,均使用相同约定,即以大写字母开始,每个单词首字母均大写,不包含下划线(帕斯卡命名法)。例如:
class BookCartoon {
string title_;
string author_;
};
struct BookCartoon {
char title[40];
char author[40];
};
typedef struct {
char title[40];
char author[40];
} BookCartoon;
enum ButtonState {
SHORT_PRESS, /* 短按 */
LONG_PRESS, /* 长按 */
};
typedef enum {
SHORT_PRESS, /* 短按 */
LONG_PRESS, /* 长按 */
} ButtonState;
类型 变量 采用驼峰命名:
序号类别举例1结构体变量bookCartoon2对象名bookCartoon3枚举变量buttonState
1.5 函数 命名规则
一般来说,函数名的每个单词首字母大写,没有下划线。 对于首字母缩写的单词,更倾向于将它们视作一个单词进行首字母大写。
序号方式描述1驼峰 命名法myFunctio(),deleteUrl()2下划线 命名法my_function()3帕斯卡(Pascal)命名法MyFunction(),DeleteUrl()
1.6 枚举 命名规则
枚举的命名应当和常量或宏一致:kEnumName或是ENUM_NAME。
typedef enum {
BS_SHORT_PRESS, /* 短按 */
BS_LONG_PRESS, /* 长按 */
} ButtonState;
1.7 宏 的命名规则
命名全部大写,使用下划线 _连接。
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
2、函数
序号描述1一个函数 仅完成 一件功能2重复代码 应该尽可能提炼成 函数3避免函数的代码块嵌套过深4对函数的错误返回码要全面处理5在源文件范围内声明和定义的所有函数,除非外部可见,否则应该增加static关键字
3、质量保证
序号原则描述1正确性程序要实现设计要求的功能2简洁性程序易于理解并且易于实现3可靠性程序在给定时间间隔和环境条件下,按设计要求成功运行程序的概率4可维护性程序被修改的能力,包括纠错、改进、新需求或功能规格变化的适应能力5代码 可测试性软件发现故障并隔离、定位故障的能力,以及在一定的时间和成本前提下,进行测试设计、测试执行的能力6代码 性能高效尽可能少地占用系统资源,包括内存和执行时间7可移植性为了在原来设计的特定环境之外运行,对系统进行修改的能力
4、程序效率
在保证软件系统的 正确性、简洁、可维护性、可靠性 及 可测性的前提下,提高代码效率。
5、注释
优秀的代码 不写注释也可轻易读懂,注释无法把糟糕的代码变好,需要很多注释来解释的代码往往存在坏味道,需要重构。
命名的 常用缩写
Primitive(原语)缩写翻译receiverecv接收sendsend发送argumentarg-bufferbuf-commandcmd-comparecmp-configcfg-devicedev-errorerr-hexadecimalhex-initializeinit-maximummax-minimummin-messagemsg-parameterparam-previousprev-registerreg-synchronizesync-temptmp-