C语言代码风格总结
此文将用到的一些代码风格规范总结起来,作为自己以后写代码时的参考。
大体上和Google全球开源项目C++风格一样,Google风格指南链接如下:
Google 开源项目C++ 风格指南 - 内容目录
(一)命名风格
业界流行的3种命名风格分别是大小驼峰式、下划线式、匈牙利式,首先排除匈牙利式风格,个人比较犹豫的是小驼峰和下划线式命名,个人比较喜欢下划线式命名,一眼就能看出哪些单词,令人很舒服,像linux这种C语言的终极大项目大部分都是下划线式命名可见一斑。
而大小驼峰看起来很简略,可是实际写代码的时候大部分都是比较长的几个单词组合,导致代码大部分都是一连串的英文字母,可读性比较差。有些人可能觉得可以用单词缩写或者缩减单词这种手段来减少长度,但是《代码整洁之道》说的很清楚,这种人写的代码只能给自己看,而且时间成了自己都要想半天缩写是什么意思!
所以当长度上来以后我每次看的时候都要贴到屏幕上去分解单词,眼睛太累了。然而对于单片机来说,实测发现用下划线比大小驼峰多出很多内存消耗!
目前为了代码可读性暂时选用了下划线式的,毕竟《重构》有句话说的好,代码是写给人的,不是写给机器的!内存不足的时候再说吧!
1 变量命名:
全局变量、普通变量、结构体变量、临时变量统一采用小写单词加下划线式的命名格式,如this_is_name
补充规则:
ps:全局变量以后的项目可以参考《华为C语言规范》在前面加前缀
g_xxxx (global)
2 函数命名
函数命名的时候,首先加模块名,然后动词在前面,名词在后面,统一小写单词加下划线。另外根据《代码整洁之道》函数粒度要足够细,一个函数只允许做一件事,参数要足够少,命名要意思表达准确,比如函数从外部拿数据的时候buf地址形参命名为source,函数将数据传递到外面的时候buf地址形参命名为destin。
另:
如果只是返回BOOL型的函数在函数名最前面加前缀is_xxxx,代表只返回TRUE or FALSE。
3 类型命名
结构体、联合体、枚举等命名的时候为了和变量区分开来,统一采用大驼峰式命名法则,结构体变量依旧是下划线式。而枚举内的变量统一全部大写。
4 宏定义命名
数字型的宏定义统一大写,函数型的宏定义和普通函数一样的命名法则。
(二)程序风格
1 内联函数
当函数只有 10 行甚至更少时将其定义为内联函数.
内联函数可以令目标代码更加高效. 对于存取函数以及其它函数体比较短, 性能关键的函数, 鼓励使用内联.
但滥用内联将导致程序变得更慢. 内联可能使目标代码量或增或减, 这取决于内联函数的大小. 内联非常短小的存取函数通常会减少代码大小, 但内联一个相当大的函数将戏剧性的增加代码大小. 现代处理器由于更好的利用了指令缓存, 小巧的代码往往执行更快。
所以,一个较为合理的经验准则是, 不要内联超过 10 行的函数.。
另一个实用的经验准则: 内联那些包含循环或 switch 语句的函数常常是得不偿失 (除非在大多数情况下, 这些循环或 switch 语句从不被执行)。
2 #include 的路径及顺序
使用标准的头文件包含顺序可增强可读性, 避免隐藏依赖。
顺序:所依赖的头文件,C 库,其他库的 .h,本项目内的 .h。
…待补充…