【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来!
长期持续带来更多案例与技术文章分享;
欢迎商业项目咨询,10年+软硬全栈内功,助力解决您的尊贵需求。
原文链接:https://winter.blog.csdn.net/article/details/134033215
——————————————————————————————————
目录
2.4 每一个.c 文件应有一个同名 .h 文件,用于声明需要对外公开的接口
2.8 总是编写内部 #include 保护符( #define 保护)
2.10 只能通过包含头文件的方式使用其他 .c 提供的接口,禁止在.c 中通过 extern 的方式使用外部函数接口、变量
2.12 一个模块通常包含多个 .c 文件,建议放在同一个目录下,目录名即为模块名。为方便外部使用者,建议每一个模块提供一个 .h ,文件名为目录名
2.13 如果一个模块包含多个子模块,则建议每一个子模块提供一个对外的 .h,文件名为子模块名
3.3 避免函数过长,新增函数不超过 50 行 (非空非注释行)
3.4 避免函数的代码块嵌套过深,新增函数的代码块嵌套不超过4层
3.5 可重入函数应避免使用共享变量;若需要使用,则应通过互斥手段(关中断、信号量)对其加以保护
3.6 对参数的合法性检查,由调用者负责还是由接口函数负责,应在项目组/模块内应统一规定,缺省由调用者负责
3.11 函数应避免使用全局变量、静态局部变量和 I/O 操作,不可避免的地方应集中使用
3.12 检查函数所有非参数输入的有效性,如数据文件、公共变量等
3.15 在源文件范围内声明和定义的所有函数,除非外部可见,否则应该增加static关键字
4.1 标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解
4.2 除了常见的通用缩写以外,不使用单词缩写,不得使用汉语拼音
4.4 用正确的反义词组命名具有互斥意义的变量或相反动作的函数等
4.6 标识符前不应添加模块、项目、产品、部门的名称作为前缀
4.7 平台/驱动等适配代码的标识符命名风格保持与原有风格一致
4.8 重构/修改部分代码时,应保持和原有代码的命名风格一致
4.10 全局变量应增加“g_” 前缀,静态变量应增加“s_”
4.11 禁止使用单字节命名变量,但允许定义i、j、k作为局部循环变量
4.14 函数命名应以函数要执行的动作命名,一般采用动词或者动词+名词的结构
4.16 对于数值或者字符串等等常量的定义,建议采用全大写字母,单词之间加下划线“_”的方式命名(枚举同样建议使用此方式定义)
4.17 除了头文件或编译开关等特殊标识定义,宏定义不能使用下划线“_”开头和结尾
5.7 构造仅有一个模块或函数可以修改、创建,而其余有关模块或函数只访问的全局变量,防止多个不同模块或函数都可以修改、创建同一全局变量的现象
5.8 使用面向接口编程思想,通过 API 访问数据:如果本模块的数据需要对外部模块开放,应提供接口函数来设置、获取,同时注意全局数据的访问互斥
6.7 宏定义中尽量不使用return、goto、continue、break等改变程序流程的语句
7.1 表达式的值在标准所允许的任何运算次序下都应该是相同的
7.2 函数调用不要作为另一个函数的参数使用,否则对于代码的调试、阅读都不利
7.3 赋值语句不要写在 if 等语句中,或者作为函数的参数使用
8.3 在代码的功能、意图层次上进行注释,即注释解释代码难以直接表达的意图,而不是重复描述代码
8.4 修改代码时,维护代码周边的所有注释,以保证注释与代码的一致性,不再有用的注释要删除
8.5 文件头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者姓名、工号、内容、功能说明、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明
8.6 函数声明处注释描述函数功能、性能及用法,包括输入和输出参数、函数返回值、可重入的要求等;定义处详细描述函数功能和实现要点,如实现的简要步骤、实现的理由、设计约束等
8.7 全局变量要有较详细的注释,包括对其功能、取值范围以及存取时注意事项等的说明
8.8 注释应放在其代码上方相邻位置或右方,不可放在下面,如放于上方则需与其上面的代码用空行隔开,且与下方代码缩进相同
8.9 对于 switch语句下的case语句,如果因为特殊情况需要处理完一个case后进入下一个case处理,必须在该case语句处理完、下一个case语句前加上明确的注释
8.10 避免在注释中使用缩写,除非是业界通用或子系统内标准化的缩写
8.13 注释应考虑程序易读及外观排版的因素,使用的语言若是中、英兼有的,建议多使用中文,除非能用非常流利准确的英文表达,对于有外籍员工的,由产品确定注释语言
8.14 文件头、函数头、全局常量变量、类型定义的注释格式采用工具可识别的格式
9.3 一条语句不能过长,如不能拆分需要分行写。一行到底多少字符换行比较合适,产品可以自行确定
9.4 多个短语句(包括赋值语句)不允许写在同一行内 ,即一行只写一条语句
9.5 if、for、do、while、case、switch、default 等语句独占一行
9.6 在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格 ;进行非对等操作时,如果是关系密切的立即操作符(如-> > ),后不应加空格
10.1 使用编译器的最高告警级别,理解所有的告警,通过修改代码而不是降低告警级别来消除所有告警
10.2 在产品软件(项目组)中,要统一编译开关、静态检查选项以及相应告警清除策略
10.3 本地构建工具(如 PC-Lint)的配置应该和持续集成的一致,两者一致,避免经过本地构建的代码在持续集成上构建失败
订阅专栏 解锁全文
8万+

被折叠的 条评论
为什么被折叠?



