为什么嵌入式C语言编程要有编码规范
来源:互联网 发布:php hashmap的实现原理 编辑:程序博客网 时间:2024/06/08 22:36
本期和接下来几期的专题都是与嵌入式C语言编码规范相关。首先来看两段有效代码完全一样的代码(源码取自某芯片的固件库,代码查看器选用的UEStudio,视图配置为显示空格和Tab)。大家可以感受下,同样的代码,两种编码风格比较起来,你看懂代码所需要的时间哪个更短。
这里简单讲解下:
代码1的if块语句的大括号没有另起并独占一行,缩进没有统一使用空格(不同的编译器和代码阅读器对tab键的解析规则是不一样的),加上逻辑独立的if之间缺乏空行,会给不熟悉该代码的程序员造成阅读障碍。如果if里面有多层嵌套的话,代码层级关系看起来就有会更加凌乱,理解效率会更加低下。
言归正传,什么是代码编码规范呢?编码规范指的是从代码的正确性、稳定性、可读性等方面识别出来的在编码过程中要遵循的规则,例如代码的排版规则,注释方法,函数、变量命名规则等等。我曾经先后在三个规模比较大的公司任职,这些公司都有严格实行C语言编码规范,尤其以一加汽车行业的公司要求最为严格,除了要遵循MISRA C以外,公司还购买了专业的代码检查工具,并自定义了一系列命名规则,进行代码规范化检查,对于所有违规项都需要更正,因特殊情况无法规避的,需要逐条注明原因,否则项目无法往前推动。曾经苦逼的我,一个星期需要对1000+条违规项进行逐条检查。
那为什么要制定规则来规范编码过程呢?其实想想实行好的编码规范能带来哪些好处就很明确:
1. 提高代码的可读性:如果没有代码规范的规约,即便是同一个人,他在不同时期代码的写法与风格都会有差异,更不用说由多人组成的团队了。相同的命名规则,编排方法,注释原则,能大大提高程序的可读性。
2. 提高代码的正确性和健壮性:编码规范一般都会有基于准确性和安全性方面的条例,帮助程序员编写出准确性高和健壮性好的代码,例如在MISRA C中规定所有的if ... else if结构应该由else子句结束。else语句或者要执行适当的动作,或者要包含合适的注释以说明为何没有执行动作。这与switch语句中要求具有最后一个必须有default结束一致,都是为了防止程序漏了考虑特殊情况而导致非预期结果,从而引发异常。
3. 快速提高程序员的编码能力:编码规范往往都是行业内人士的经验积累,很多条例都是由“过来人”踩过的坑,吃过的亏转换而来。对于经验较少的程序员,可以通过阅读和遵守编码规则快速提高自身的编码能力,写出更加高质量的代码。
最后谈一谈如何看待编码规范:
1. 编码规范一旦制定就必须严格遵守,尤其是在由多个开发人员组成的团队中;
2. 编码规范并非一成不变的,需要在实际工作过程中将一些不良编码导致bug的经验提炼为新的条例;
3. 要持开放的心态看待不同的编码规范,尤其是一些代码风格方面的规定,代码如人,风格的差异很正常,要做到彼此尊重。
扩展阅读,百度一下均可找到:
1. MISRA C 2012
2. 华为C/C++编码规范和范例
公众号刚开通使用,活跃度不高,所以无法在文章内留言。如需交流,可以联系:
QQ群:478737279(加群请注明理由)
微信号:15914137911
欢迎扫码关注本公众号,会不定期推送嵌入式软硬件设计方面的干货。
- 为什么嵌入式C语言编程要有编码规范
- 嵌入式软件:C语言编码规范
- 嵌入式软件:C语言编码规范
- 嵌入式C语言编程规范(转载)
- 嵌入式C编程规范
- C/C++语言为什么要有宏?
- C语言编码规范
- C语言编码规范
- C语言编码规范
- C语言编码规范
- C语言编码规范
- c语言编码规范
- C语言编码规范
- 嵌入式C语言编程规范(个人规约)
- 嵌入式为什么选择C语言?
- c语言编程规范
- C 语言编程 规范
- C语言编程规范
- 商品展示案例
- 简单的实现自定义View画一个钟表
- TortoiseGit记住密码
- Ubuntu 14.04.1安装mysql以及配置
- C++回炉(1)
- 为什么嵌入式C语言编程要有编码规范
- 京东量化第二次线上分享会又来啦
- poj1163解题报告
- JavaSE 学习参考:HashMap和Hashtable的区别
- C++抽象工厂模式
- matplotlib-绘制精美的图表
- MySQL数据库入门(五)
- HTTP,HTTPS协议知识点总结
- ZOJ 3872 Beauty of Array