C语言最佳实践
上QQ阅读APP看书,第一时间看更新

1.4.5 命名规则保持一致

在代码中,应采用一致的命名规则(K&R命名法或匈牙利命名法),而不能混用命名规则。但是,C代码更倾向于采用K&R命名法。因此笔者建议,除用于接口的函数名称之外,最好在内部的实现代码中统一采用K&R命名法,并避免出现像spName这样的命名风格。用于接口的函数名称采用匈牙利命名法或者带有小写前缀的驼峰命名法具有一定的优势,并且容易把这些接口和系统函数名或者其他函数库的接口名区分开来,从而在一定程度上避免命名污染。比如常用于解析JSON的开源函数库cJSON,其接口定义如下:

/* returns the version of cJSON as a string */
const char* cJSON_Version(void);
 
/* Supply malloc, realloc and free functions to cJSON */
void cJSON_InitHooks(cJSON_Hooks* hooks);
 
cJSON * cJSON_Parse(const char *value);
cJSON * cJSON_ParseWithLength(const char *value, size_t buffer_length);

除源代码中的函数名、变量名之外,用于组织源代码的目录和文件的命名规则也需要得到重视。下面给出一些常规建议:

(1)仅使用ASCII可打印字符(文件系统不允许的字符除外),而不要使用中文、表情符号等特殊字符;

(2)使用-连接多个单词而避免使用_,这一点和C代码中的变量名不同;

(3)使用全小写的文件名和目录名。

如此,ordered-map.c就是合乎上述建议的文件名,而ordered_map.c就不是合乎上述建议的文件名。