当前位置:   article > 正文

华为C语言编程规范(精华总结)

华为c语言编程规范

目录

1、代码总体原则

2、头文件

2、函数

3、标识符命名与定义

4、变量

5、宏、常量

6、表达式

7、注释

8、排版与格式

9、代码编辑编译 


“编写程序应该以人为本,计算机第二。”                                                               

                                                                                                                                       ——Steve McConnell

“无缘进华为,但可以用华为的标准要求自己。”                                                               

                                                                                                                                       ——不脱发的程序猿





















 

1、代码总体原则

1、清晰第一 

清晰性是易于维护、易于重构的程序必需具备的特征。代码首先是给人读的,好的代码应当可以像文章一样发声朗诵出来。

目前软件维护期成本占整个生命周期成本的40%~90%。根据业界经验,维护期变更代码的成本,小型系统是开发期的5倍,大型系统(100万行代码以上)可以达到100倍。业界的调查指出,开发组平均大约一半的人力用于弥补过去的错误,而不是添加新的功能来帮助公司提高竞争力。

一般情况下,代码的可阅读性高于性能,只有确定性能是瓶颈时,才应该主动优化。

2、简洁为美

简洁就是易于理解并且易于实现。代码越长越难以看懂,也就越容易在修改时引入错误。写的代码越多,意味着出错的地方越多,也就意味着代码的可靠性越低。因此,我们提倡大家通过编写简洁明了的代码来提升代码可靠性。

废弃的代码(没有被调用的函数和全局变量)要及时清除,重复代码应该尽可能提炼成函数。

3、选择合适的风格,与代码原有风格保持一致

产品所有人共同分享同一种风格所带来的好处,远远超出为了统一而付出的代价。在公司已有编码规范的指导下,审慎地编排代码以使代码尽可能清晰,是一项非常重要的技能。 如果重构/ / 修改其他风格的代码时,比较明智的做法是根据 现有 代码 的 现有风格继续编写代码,或者使用格式转换工具进行转换成公司内部风格。


2、头文件

对于C语言来说,头文件的设计体现了大部分的系统设计。 不合理的头文件布局是编译时间过长的根因,不合理的头文件实际上反映了不合理的设计。

1、头文件中适合放置接口的声明,不适合放置实现

头文件是模块(Module)或单元(Unit)的对外接口。头文件中应放置对外部的声明,如对外提供的函数声明、宏定义、类型定义等。

要求:

  • 内部使用的函数(相当于类的私有方法)声明不应放在头文件中。
  • 内部使用的宏、枚举、结构定义不应放入头文件中。
  • 变量定义不应放在头文件中,应放在.c文件中。
  • 变量的声明尽量不要放在头文件中,亦即尽量不要使用全局变量作为接口。变量是模块或单元的内部实现细节,不应通过在头文件中声明的方式直接暴露给外部,应通过函数接口的方式进行对外暴露。 即使必须使用全局变量,也只应当在.c中定义全局变量,在.h中仅声明变量为全局的。

2、头文件应当职责单一,切忌依赖复杂

头文件过于复杂,依赖过于复杂是导致编译时间过长的主要原因。很多现有代码中头文件过大,职责过多,再加上循环依赖的问题,可能导致为了在.c中使用一个宏,而包含十几个头文件。

错误示例:某平台定义WORD类型的头文件:

 
  1. #include <VXWORKS.H>

  2. #include <KERNELLIB.H>

  3. #include <SEMLIB.H>

  4. #include <INTLIB.H>

  5. #include <TASKLIB.H>

  6. #include <MSGQLIB.H>

  7. #include <STDARG.H>

  8. #include <FIOLIB.H>

  9. #include <STDIO.H>

  10. #include <STDLIB.H>

  11. #include <CTYPE.H>

  12. #include <STRING.H>

  13. #include <ERRNOLIB.H>

  14. #include <TIMERS.H>

  15. #include <MEMLIB.H>

  16. #include <TIME.H>

  17. #include <WDLIB.H>

  18. #include <SYSLIB.H>

  19. #include <TASKHOOKLIB.H>

  20. #include <REBOOTLIB.H>

  21. typedef unsigned short WORD;

这个头文件不但定义了基本数据类型WORD,还包含了stdio.h syslib.h等等不常用的头文件。如果工程中有10000个源文件,而其中100个源文件使用了stdio.h的printf,由于上述头文件的职责过于庞大,而WORD又是每一个文件必须包含的,从而导致stdio.h/syslib.h等可能被不必要的展开了9900次,大大增加了工程的编译时间。

。。。。。。。。。。。。。。。。。

版权原因,完整文章,请参考如下:华为C语言编程规范(精华总结)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/224067
推荐阅读
相关标签
  

闽ICP备14008679号