1、代码规范的目标

  • 代码简洁精炼、美观,可持续性好
  • 高效率
  • 高复用,可移植性好
  • 高内聚,低耦合
  • 没有冗余
  • 规范性,代码有规可循,可以看出自己当时的思考过程
  • 特殊排版,特殊语法,特殊指令,必须特别说明
  • 锻炼代码抽象思维
  • 参考书籍,高质量程序设计指南:C语言,林锐

2、代码风格好的好处

  • 代码分层明显,方便在开发中明确接口,确定具体任务
  • 良好的代码风格有助于拆分业务逻辑,减少文档工作

3、代码的基本架构

BSP(板级驱动程序,外设的驱动)
Core(MCU驱动程序,初始化内部的时钟、IIC、SPI,包括main.c)
Drivers(厂商驱动程序——厂商SDK程序)
Middlewares(中间件——各个项目通用,抽象性高,例如FreeRTOS数学库中所包含的快速傅里叶变换库)
SYSTEM(系统配置层——对系统定义整体的宏)
Application(应用层——根据业务)
 

代码规范NOTE:

1、多个数据的printf需要进行换行及对齐处理

图1 长数据的printf规范写法实例

2、在书写函数时注意是否需要使用返回值,使用的话,有没有在判断返回值非法时打印出出错的具体原因,方便后续程序在出错时进行排查。例如在申请内存时出错。

3、或者在某个模式启动、参数存储、消息发送之类的场景(短时间内触发一次或少次)中有没有对关键参数进行打印。例如某个函数的职责是负责接受APP发送过来的数据并且通过调用其他的API接口来设置参数,此时就需要将参数通过打印的方式Printf的方式打印出来。

单片机串口打印调试信息①_mcu jlink调试串口打印设置-CSDN博客

4、写NULL == ARR,而不是ARR = NULL

图2 注意在进行条件判断时,元素的先后展示顺序

5、一份优秀的应用层代码应该是先能够抽象出所需要实现的API接口功能,即先画靶子再射箭。体现在代码上就是能先在头文件上确定可暴露在外部的接口函数功能,然后可以在源文件内完成对这些接口函数的编写。也就是可以先建立接口函数的逻辑。而编写接口函数时,接口函数内的分点注释其实就相当于该函数的逻辑。则应做到先有头文件再有源文件,先有逻辑注释再有功能代码

层级 职责 可见性
应用层接口 定义业务逻辑接口 公开(头文件)
服务层 实现接口核心逻辑 文件内可见(static函数)
数据层 参数获取与转换 完全封装(static变量+函数)

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐