代码编程规范

1、命名规则

风格说明
unix like风格单词用小写字母,每个单词直接用下划线„_‟分割,例如text_mutex,kernel_text_address。
Windows风格大小写字母混用,单词连在一起,每个单词首字母大写。
匈牙利命名法用这种方法命名的变量显示了其数据类型。例如u32Step,u8Number。

代码和文件都采用大驼峰式

2、变量,结构体名规则

一级二级三级名称后缀备注
g_XxxXxx全局变量,函数外部定义,作用域整个工程
cg_XxxXxx全局常量,函数外部定义,作用域整个工程
sg_XxxXxx静态全局变量,函数外部定义,作用域当前文件
csg_XxxXxx静态全局常量,函数外部定义,作用域当前文件
c_XxxXxx局部常量,函数内部定义,作用域当前函数
s_XxxXxx局部静态变量,函数内部定义,作用域当前函数
pXxxXxx指针前缀
aXxxXxx数组前缀
m_XxxXxx结构体成员前缀
bnXxxXxxbit变量前缀;b,b2,b3…;分别代表占位bit数
u8,u16,u32…XxxXxx基本无符号数据变量
s8,s16,s32…XxxXxx基本有符号数据变量
uv8,uv16,uv32…XxxXxx基本无符号volatile数据变量
sv8,sv8,sv32…XxxXxx基本有符号volatile数据变量
f,fvXxxXxxfloat / volatile float数据变量
d,dvXxxXxxdouble / volatile double数据变量
tXxxXxx结构体变量
uniXxxXxx联合体变量
eXxxXxx枚举变量
funcXxxXxx函数指针变量
STRU_;UNI_;ENU_XxxXxx结构体、联合体、枚举的typedef类型定义
e_XxxXxx枚举体成员

示例

uint32_t g_u32CntAck;
static uint8_t sg_au8TxBuf[100];
uint8_t *pu8Tx = sg_au8TxBuf;

/**
* @brief 传输项 
*/
typedef struct tag_STRU_TransItem
{
	STRU_CntSListNode	m_tCSListNode;	///< 链表节点
	STRU_FrmHdr			m_tFrmHdr;		///< 帧头结构
} STRU_TransItem;

/**
 * @brief 帧类型定义
 */
typedef enum tag_ENU_FrmType
{
	e_FrmTypeNone	= 0x00,		///< 无效
	e_FrmTypeAck		= 0x01,		///< 应答帧
	e_FrmTypeSeqRst	= 0x02,		///< 复位帧
} ENU_FrmType;

2、函数

2.1、 函数命名规则

序号说明字体选择备注
1模块名称大驼峰必选以最直观模式给用户区分不同的模块函数,采用模块英文名或简写
2函数动作大驼峰必选动作英文名称或简写,最多2个单词
3函数对象大驼峰可选对象英文名称或简写,最多2个单词
4函数范围大驼峰可选范围英文名称或简写,最多2个单词

示例
①文件名为os_msg.c

void  OS_MsgPoolInit (OS_ERR  *p_err)

3、宏命名规则

序号说明字体选择备注
1模块名称大写必选以最直观模式给用户区分不同的模块函数,采用模块英文名或简写
2下划线必选间隔符
3功能名称大写必选功能英文名称或简写,最多2个单词
4下划线必选间隔符
5修饰词大写必选修饰词英文名称或简写,最多2个单词

示例

#define FRM_FLAG_INITED		(((uint32_t)1) << 0)		///< 0:未初始化;1:已初始化
#define FRM_FLAG_TX_REQ		(((uint32_t)1) << 8)		///< 1:正在请求tx
#define FRM_FLAG_NEED_ACK	(((uint32_t)1) << 9)		///< 需求ack
#define FRM_FLAG_TARNS_CTRL_FRM	(((uint32_t)1) << 10)		///< 需中间插入tx ctrl帧
#define FRM_FLAG_RETRANS	(((uint32_t)1) << 11)		///< 处于重传状态
#define FRM_FLAG_SEQ_RET	(((uint32_t)1) << 12)		///< 需中间插入tx rst帧
#define FRM_FLAG_TXING		(((uint32_t)1) << 13)		///< 处于tx传输状态

4、文件命名规则

序号说明字体选择备注
1模块名称大驼峰必选采用模块英文名称或简写
2分类名称大驼峰可选分类英文名称或简写
3修饰词大驼峰可选修饰词英文名称或简写

示例

UartTransLayer.c 
UartPhyLayer.c 
UartPhyLayerConfig.h
模块文件名说明
液晶Lcd.c液晶初始化,字符、汉字和图片显示实现
Lcd.h对外公开的接口申明&定义
LcdPrivate.h非对外公开的私有申明&定义
LcdCfg.h对功能模块的配置定义
LcdFont.c液晶自定义字库
LcdFont.h
按键Key.c按键初始化,动作定义等
Key.h
数码管LedSeg.c数码管初始化,数字显示灯
LedSeg.h

5、注释

5.1、文件描述区


/**
 * @file main.c
 * @author xxx(xxxxxxx@xxxxxxxx.com)
 * @version 1.0
 * @date 2021-04-01
 * @brief 主函数入口
 * 
 * @copyright Copyright (c) 2021  XXXX公司
 * 
 * @par 修改日志:
 * <table>
 * <tr><th>Date       <th>Version <th>Author  <th>Description
 * <tr><td>2021-04-01 <td>1.0     <td>xxx	<td>内容
 * </table>
 */

5.2、函数注释

/**
 * @brief 函数功能描述
 * @param[in] 	pu8Buf		缓存地址
 * @param[in]	u32Size		缓存大小
 * @return int	实际成功操作的数据量
 */
int PlatformOledWrite(uint8_t *pu8Buf, uint32_t u32Size);

5、过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值