C语言代码规范
一、问题引入
初入编程世界,我们不知道什么叫做好代码。一切以实现功能和快速上线项目为主,但编程经验增加,发现代码越来越难写,越来越难改。
导致这样的原因是没有遵循一般性的编程规则或则没有良好的编程风格。俗话说:“无规矩不成方圆”,在编程水平上来后,就更应该遵循规则。
傻瓜都能写出计算机可以理解的代码。唯有能写出人类容易理解的代码的,才是优秀的程序员
好代码的检验标准就是人们是否能轻而易举地修改它
二、解决过程
规则涉及到:变量、函数、结构体、宏、注释、缩进、空格、花括号等
2-1 变量
好代码应能清楚地表明它在做什么,而变量命名是代码清晰的关键
变量按照作用域可以分为:局部变量、全局变量、静态局部变量
变量按照类型可以为:普通变量、结构体变量
-
变量采用小驼峰(或匈牙利)命名法 例如:
englishBook
-
结构体变量加后缀_t 例如:
event_t
-
全局变量加前缀g_ 例如:
g_mode
-
静态局部变量加前缀s_ 例如:
s_mode
💡 变量命名法有多种,但总体风格只能体现一种,不能代码中同时出现命名方法。
2-2 函数
好的命名十分重要,但往往并非唾手可得。只有恰如其分地命名,才能彰显出将大函数分解成小函数的价值
-
若函数无特殊用途,一律限制为
static
例如:static int lib_user_id_get()
-
函数命名采用匈牙利命名法 例如:
int lib_user_id_get()
-
函数参数类型为指针时,若禁止通过间接引用修改值,应限制为const 例如:
static int lib_user_pwd_set(const char *pwd)
-
函数参数类型为结构体时,一律传入结构体指针,若禁止通过间接引用修改值,一律限制为const
-
函数主体部分不能过长,会影响阅读。主体部分应控制在一个显示器页面内
-
一个函数只做一件事,正如函数名定义的那样
-
当函数参数大于三个以上的参数时,考虑把三个参数作为一个结构体
2-3 结构体
-
结构体名称应该是名词或名词短语,不应该是动词 例如:
Customer
、Account
-
结构体声明时,采用大驼峰命名法,加后缀_T 例如:
EventData_T
-
结构体变量定义时,采用小驼峰命名法,加后缀_t 例如:
eventData_t
2-4 宏
- 宏定义使用全大写字母,连接符用_ 例如:
#define FILE_SIZE 1024
2-5 注释
-
当你感觉需要撰写注释时,请先尝试重构,试着让所有注释都变得多余
-
当逻辑比较复杂难以理解,应该加以注释说明
-
良好的代码是不需要注释的,应该代码可读性良好
-
注释不是越多越好,仅在关键地方标注注释就好
三、反思总结
良好的代码风格可以增加可读性,提高可维护性。
四、参考引用
重构:改善既有代码的设计(第二版)
代码整洁之道