前言:磨刀不误砍柴,良好的编程规范毫无疑问会助力提高编程效率。华为2011年的C语言编程规范长达61页,对实际工程中的应该如何规避编程陋习做出了很详细的指导,适合经常阅读反复学习,实践和理论指导统一,实现逐步提高。
61页的指导不是要求你囫囵吞枣,而是细嚼慢咽,意识常在,没事就翻翻。
下面是自己的编程习惯以及一些关于华为C语言规范等文档阅读的笔记总结,更新是不定时的。
一、注释/代码片段
- 诉求:预先编辑好一些有格式的注释(文件头注释、函数头注释等)、宏(条件编译等),以实现在需要的地方整段输入。
- 达到的效果:根据已建立的代码片段模板,在写代码时直接输入提示符,按Tab键能够快速定位下一个编辑点,同时也可以多个位点同时输入。
实现步骤
说明:每个软件工程师都应该拥有一款适合自己的文本/代码编辑器,这里以微软家族的Visual Code来具体实现这一诉求。
Visual Code上配置用户代码片段配置用户代码片段
Visual Code下,使用快捷键Ctrl+Shift+P,输入user snippet,敲击回车
我们将所配置的代码片段应用在所有文件类型上,即点击新建全局代码片段
输入任意文件名,回车即可
“my code description” :代码块的描述。
“scope” :所用的语言类型,如果你用的是C,其值改成C。
“prefix”:所用的快捷键提示。
“body”:代码块内容,类似照着填。
这是我的配置(文件头注释、文件头修改注释、函数头注释、步骤描述、分隔等、),你可以在此基础上进行修改
|
|
二、文件、变量、结构体、函数命名
文件名
- 文件名:建议全部小写命名,下面是华为说的
变量
- 变量命名风格:建议nuix风格
某公司的编程规范建议unix风格
个人喜欢unix风格,因为大小写切换真的是很烦,中英文切换就更烦了
- 变量命名前缀:全局变量g前缀,静态变量s前缀,指针变量p前缀
结构体
使用typedef对结构体取别名时,以“_t”结尾
全局变量使用全局结构体封装所有变量,例如
|
|
函数
其他
常见的通用单词进行缩写:
|
|
常见的互斥意义
|
|
三、其他知识点
在华为2011年的C编程规范里有很多值得认真我们学习的编程规范,这里仅罗列很小的一部分
头文件依赖的传导会导致编译时间上升,需要合理包含头文件
减少全局变量的使用
头文件里放声明,通常一个C文件对应一个头文件,C文件里禁止通过extern使用外部接口
头文件是模块对外的接口,头文件里放对外提供的函数声明、宏定义、类型定义,注意尽可能不存放对外变量的声明,即尽可能不使用全局变量作为接口 ,华为文档里多次提到这一点,尽可能甚至是杜绝这种方法
新增函数不要超过50行
代码嵌套不要超过4层
扇出要合理,通常是3-5
函数非参输入,必须检查有效性
源文件内部所有声明和定义的函数,应增加static关键词
【下次编辑点】
华为2011 C编程规范:
Rt-thread编程规范:
https://github.com/RT-Thread/rt-thread/blob/master/documentation/coding_style_cn.md