C语言编码规范——着重注意点整理

发布时间:2018-05-26 21:50,

浏览次数:260

C语言编码规范——着重注意点整理

编码规范的目的:

保证不同背景和经历的开发同学可以良好的协同开发

保证组织级的开发技能和经验得以共享和传承

编程最难的是命名!因为其他的算法、数据结构都有据可循。

命名完全体现了程序的可阅读性和可理解性。

1、 变量命名规范

(1)   变量命名

以字母或下划线开头,大小写字母和下划线交错命名。

(2)   前缀

静态变量 s_ 全局变量 g_ 指针变量 p_ 无符号 u_ 数组 a_ 函数指针 pf_ 枚举变量 en_ 结构体 st_ VOID v_ 32位系统下:

signed int缩写为INT或者INT32 unsigned int缩写为UINT或者UINT32。 BOOL b_XXX; CHAR c_XXX;

UCHAR uc_XXX; SHORT s_XXX; USHORT us_XXX; INT i_XXX; UINT ui_XXX; LONG l_XXX;

ULONG ul_XXX;

2、 宏定义

宏定义的命名:字母全部大写并以下划线进行分割。

宏定义是预处理时进行简单的字符替换。

宏定义没有类型,而且宏定义不分配内存

3、 类型后缀

结构体以_S结尾:

typedef struct XXX { .... }XXX_S;

附:结构的封装一定要合理,好好利用字节对齐问题,减少空间的浪费。

枚举以_E结尾:

typedef enum XXX { .... }XXX_E;

联合体以_U结尾:

typedef union XXX { .... }XXX_U;

函数指针以_PF结尾。

4、 函数

命名规范:模块名_功能(模块字母大写,功能字母大小写交错)

函数入参可以加上IN/OUT/INOUT。

注意:

函数务必检查入参的合法性

尽量设计高扇入、合理扇出(<7)的函数。

(扇出即是调用其他函数的个数,扇入即被调用次数)

5、 文件名

文件名全小写,命名规范“模块名_功能名.文件后缀”

6、 换行/命名的缩写/代码对齐/字符间空白

7、 注释

只能使用/* */。

8、 日志打印

(1)   打印什么?

基本包括文件名、函数名、行号、错误原因、变量值等。

(2)   日志分级

DEBUG/TRACE——精确记录一些用于调试的log。

INFO——一般记录正常运行流程和状态记录。

WARN——警告,可能会出现问题的地方。

ERROR/FATAL——重点记录的错误,详细记录失败的场景、失败原因、一些关键变量值等。

9、 其他——编码安全注意点及编码效率

(1)   编码效率:全局效率、局部效率、时间效率、空间效率

注意编程中的时间和空间转换的问题,以此提高效率。

(2)   禁止使用goto语句。

(3)   If else语句的嵌套尽量不超过三层。

(4)   尽量避免循环中continue、break的一起使用问题。

(5)   务必进行入参检查和申请内存的变量的释放问题。

指针的操作:

#使用前,进行合法性检查 ptr = malloc(size); if(NULL == ptr) { //处理语句; } else { //处理语句; }

#使用完指针ptr,进行释放和指针置空 free(ptr); ptr = NULL;

指针使用前,进行合法性检查(判空处理),指针使用后,释放申请的空间且指针置空。

(6)   代码复杂度的度量和控制,提高软件的可维护性。

(7)    减少CPU的切换次数,将最忙的循环放在内层。

(8)    循环中,合理放置判断语句,减少判断次数。

(9)    判断风格,if(value == variable),if(NULL == ptr)

务必注意:判断是否可能恒为真、恒为假的问题!!!

(10)避免类型的隐式转换,全部进行显示类型转换。

(11)圈复杂度一般控制在<10,必须<15。

c语言把一段编码注释,C语言编码规范——着重注意点整理相关推荐

  1. C语言编码规范——着重注意点整理

    C语言编码规范--着重注意点整理 编码规范的目的: 保证不同背景和经历的开发同学可以良好的协同开发 保证组织级的开发技能和经验得以共享和传承 编程最难的是命名!因为其他的算法.数据结构都有据可循. 命 ...

  2. c语言中词法分析怎么识别注释,C语言中的词法分析-如何在检测多行注释时使星号被读取并输出?...

    我正在研究词法分析程序,检测到一行注释时一切正常. 这是我的单行注释检测代码.//Single Comment if ((Current_Character == '/') && (f ...

  3. python整段代码注释-Python中注释(多行注释和单行注释)的用法实例

    Python中注释(多行注释和单行注释)的用法实例 发布时间:2020-09-30 23:18:32 来源:脚本之家 阅读:97 前言 学会向程序中添加必要的注释,也是很重要的.注释不仅可以用来解释程 ...

  4. 词法分析器c语言带注释,C语言词法分析器内容说明注释完整可运行代码.doc-资源下载在线文库www.lddoc.cn...

    C语言词法分析器_内容说明注释完整_可运行代码.doc 1. 实验目的及要求 本次实验通过用 C 语言 设计.编制.调试一个词法分析子程序,识别单词,实现一个 C 语言词法分析器,经过此过程可以加深对 ...

  5. c语言文书源码,[应用文书]c 计算机编码.doc

    [应用文书]c 计算机编码 编码定义 ?? ?? 在计算机硬件中,编码(coding)是在一个主题或单元上为数据存储,管理和分析的目的而转换信息为编码值(典型地如数字)的过程.在软件中,编码意味着逻辑 ...

  6. c语言注释(c语言注释可以出现在任何位置)

    什么是注释-C语言注中什么是注释?C语言注中什么是注释,注释是什么意思啊! 注释是解释编程语言功能的 什么是注释-C语言注中什么是注释?C语言注中什么是注释,注释是什么意思啊! 注释是解释编程语言功能 ...

  7. c语言如何在1序号方编程,asn1编码的理解

    数据序列化:将高级语言代码转变成二进制流的过程称为数据的序列号,数据序列化的目的是物理存储或网络传输.在计算机高级程序编程语言里有许多结构化的结构,比如:数.图和结构体等,如何在网络中传输这些结构化的 ...

  8. R语言ggplot2可视化数据点注释、标签显示不全、发生边界截断问题解决实战

    R语言ggplot2可视化数据点注释.标签显示不全.发生边界截断问题解决实战 目录 R语言ggplot2

  9. R语言使用forestplot包绘制森林图:编码创建森林图仿真数据、汇总线修改、元素位置调整、垂直线、字体、风格、置信区间、线型、图例、刻度、标签等

    R语言使用forestplot包绘制森林图:编码创建森林图仿真数据.汇总线修改.元素位置调整.垂直线.字体.风格.置信区间.线型.图例.刻度.标签等 目录

最新文章

  1. 未来教育计算机三级课后题答案,未来教育计算机三级课后题答案
  2. python安装cv-oracle时如何解决vc++的问题_python中cx_Oracle模块安装遇到的问题与解决方法...
  3. 非系统表空间损坏,rman备份恢复
  4. hw叠加层开还是不开_HW叠加层是什么?
  5. Windows Azure NotificationHub+Firebase Cloud Message 实现消息推动(付源码)
  6. JQuery.lazyload 图片延迟加载
  7. 【数据库系统】大学模式
  8. 嵌入式Linux系统编程学习之三十线程的同步
  9. OpenCV-黑帽运算(BLACKHAT)
  10. 文本密度 php,基于最大文本密度的网页正文抽取方法
  11. 微信小程序使用彩色图标(阿里巴巴矢量图标库)(炒鸡详细)
  12. 如何 运行WRF模型 天气预报 数据后处理
  13. Vue之filters传参问题
  14. UVM-phase机制
  15. 网络保护第三层 WAF-网络应用防火墙
  16. 计算机系系徽设计说明,《系徽设计介绍简介模版.ppt
  17. 黑龙江省力推互联网与畜牧产业深度融合 打造大数据中心
  18. c语言记录键盘敲击次数,【转】你知道一天敲键盘的敲击次数能达到多少么
  19. php读取excel效率,PhpSpreadsheet VS Box\Spout读取excel性能对比
  20. 东北大学OJ题解—1741: C语言编程测试2020-6-11-焦明海

热门文章

  1. Python+django网页设计入门(3):使用SQLite数据库
  2. redis 亿级查询速度_吊打面试官系列:Redis 性能优化的 13 条军规大全
  3. Linux shell初识及权限理解
  4. 系统镜像服务器,服务器系统镜像
  5. 1. SSM 环境搭建(终极无错版)
  6. 9.2【彩色模型】-----基于Opencv实现-----把一幅RGB图转为CMY图
  7. win8 打开计算机配置,win8.1 更改电脑配置无法使用
  8. 负载报服务器无响应,nodejs HTTP服务器无法在高负载下处理大量响应
  9. java应用程序无法启动,Apache Tomcat / 6.0.32 - Web应用程序无法启动
  10. gets函数用不了_函数篇:指数函数