编辑: GXB156399820 | 2019-03-01 |
7 代码分支说明 编程风格 lego项目帮助文档
8 编程风格 以下规范是本程序使用的,里面包含着一些个人喜好. 程序规范 lego项目帮助文档
9 程序规范
1 tab为4个空格代替.
2 每行尽量控制在50个字符包括空格注释.
3 宏,枚举类型使用全大写,单词使用下横线分割.
4 每个标识符尽量使用有意义的单词.尽可能少的使用缩写.
5 建立一个缩写单词表,供给标识符使用.
6 函数,全局变量,类,结构体使用Pascal表示法.
7 局部变量使用Camel表示法
8 模块的私有变量为局部变量的Camel表示法加上下横线.如 A_,B_ 等等.
9 左右花括号各占一行,这个是为了方便vi的删除操作.
10 就算编译器有隐形转换类型也要显式转换来表示 代码规范N条lego项目帮助文档
10 代码规范N条lego项目帮助文档
11 代码规范N条1 当switch语句的default在语句中不含作用时,也应该加上default语句,在default中加上断言.
2 不要忽略任何一个警告,除非你知道了这个警告的意义.否则请尽可能修复他.
3 尽量使用版本控制系统
4 尽量使用自动构建系统
5 版本控制系统不能破坏自动构建系统
6 函数尽量只实现一个功能.
7 尽可能使用线性时间复杂度的算法,当然越优越好.
8 尽量减少使用全局变量来做数据共享,用时需要考虑好变量安全等等
9 不要使用直接数字之类的毫无意义的常量
10 总是初始化变量 编程规范N条lego项目帮助文档
12 编程规范N条11 尽量做到模型依赖而非模块依赖
12 同层模块尽量互相少调用,来降低之间的耦合度 lego项目帮助文档
13 编程规范N条1 假设A是B的下层架构,那么B层只能调用A中前缀为A(或者缩写)的命名的接口.
2 假设C跟D是同层模块,那么D跟C间是可以互相调用前缀为模块名字(或者缩写)的命名的接口. 接口规范N条lego项目帮助文档
14 接口规范N条 源文件头 /** * @file 文件名 * @brief 主要描述 * @details 细节描述 * @author 文件作者 * @data 文件创建日期 * @version 文件版本 * @par Copyright (c):版权声明 */ 头文件头 /** * @file 文件名 * @brief 主要描述 * @details 细节描述 * @author 文件作者 * @data 文件创建日期 * @version 文件版本 * @par Copyright (c):版权声明 */ #ifndef __头文件名字__ #define __头文件名字__ //头文件内容 #endif 注意:例如头文件名字为abc.h,那么这个宏定义为__ABC_H__ 函数头 /*! \brief 函数主要描述 * \param 函数的参数 * \retrun 函数的返回值 */ 注意:如果函数有多个参数那就多加几个param标签,每个标签占一行,如果函数没有返回值那么return标签就可以空着. 变量与宏注释 /*!<
主要说明 */ 注意:这个注释可以放在它们的头部,也可以放在它们的左侧. 非头注释 // 该处的作用,占一行 注释模板 lego项目帮助文档
15 注释模板 如图所示 目录树架构 lego项目帮助文档
16 目录树架构 lego项目帮助文档
17 目录树架构 文字说明: . 根目录 BSP 板载提供层 BSL 板载支持层 GZXingTe 公司名 XT14012 公司的产品 XT14012Vx_x.h 用宏开关来指定板上资源,使用板型号加版本号为名字,这里v后面的第一个x为主 版本号,后面的为小版本号用下划线隔开 XT14042 公司的产品 XT14042Vx_x.h OSL 片内外设支持层,提供核心构件 STM32F40X 提供这个型号的接口 DEV 驱动层,提供外围驱动构件 Includes 对上层API接口声明 CommunicationProtocol 驱动层的通信协议 IOSimulate 使用IO来实现 Usart SingleBus SPI I2C ChipSupport 使用片内支持 Usart SPI I2C USB SDIO Display 显示模块 Simple 简单显示驱动,例如数码管显示,单纯的IO扫描来控制显示 CharDisplay 稍微复杂一点的显示驱动,例如1206,12864这些需要总线控制的驱动 IO 输入输出口控制模块 Sensor 传感器采样模块 Temprature 温度传感器,下面各子目录为传感器的型号 Oxygen 氧气传感器,下面各子目录为传感器的型号 Includes 对上层API接口声明 HAL 驱动抽象层 Includes 对上层API接口声明 SYSKernel HAL的模块封装有两种形式,一种是裸机,一种是作为系统API进行封装.都可以用配置方式来选择,这 个目录下的名字由系统的名字来命名 Display 显示模块 SimpleUI 包含着简单的UI显示,一般为点阵显示 KernelUI显示模块的主要程序逻辑 Font 里面包含着字库,16*16点阵字库,8*8点阵字库等等 ComplexUI 相对于SimpleUI的,虽然也是点阵但点阵较大,需要更多的功能就不能继续使用上面的逻辑进编 写CommunicationProtocol Hal层的通信模块 Modbus Modbus模块 Storage 存储模块 E2PROM SD UDISK Sensor 传感器的数据处理模块,这些函数的数据都来自于驱动层的传感器模块,命名的规则为,假设为检测温 lego项目帮助文档