我的编程规范V1.0
一、命名规范:
(0)、类型定义:
-------------------------------------
定义如下规则
-------------------------------------
typedef bit bool;
typedef unsigned char int8u;
typedef signed char int8s;
typedef unsigned int int16u;
typedef signed int int16s;
typedef unsigned long int32u;
typedef signed long int32s;
(1)、函数命名格式:对象名_操作名。( 主语 _动词+宾语 )
说明: (a)主语和宾语如果不是必须的,可以省去。
(b)作为部件、模块或设备时必须加对象名!
-------------------------------------
拼写规则:大写开头
-------------------------------------
一般情况:各单词一律由大写字母开头,对象名和操作名之间一律用下划线分割,动词、宾语之间不用下划线分割。
正确例子:
void Disp(void); //可以省去主语和宾语
void Delay5ms(void);
void WaitSignal(void); //可以省去主语
void CPU_Init(void);
void Sys_Init(void); //操作名缩写时用大写开头
void T0_Enable ( … ); //“T0”作为部件,必须加上“T0”这个对象名!
void DS1302_SetTime( … ); //“ds1302”作为设备,必须加对象名!
void InforWindow0_DrawGraph( … );
void InforWindow0_DrawBox( … );
错误例子:
void disp(); //上例为Java风格,本例为C++风格
void waitSignal (); //上例为Java风格,本例为C++风格
void ds1302_SetTime( … ); //上例为Java风格,本例为C++风格
void initMcu(); //应为:主语+动词,即MCU_Init();
void putcLcd162( … ); //应为:主语+动词,即LCD162_PutC( … );
void DrawInforWindow0Graph(); //应为:主语+动词+宾语
-------------------------------------
中断函数名格式:中断名_ISR(void)
-------------------------------------
一般情况:中断名第一个字母采用大写,这样看起来比较爽,虽然增加了大小写切换时间。
正确例子:
void T0_ISR(void);
void Timer0_ISR(void);
void UART_ISR(void);
void CAN_ISR(void);
错误例子:
void timer0_isr();
void uart_isr();
(2)、变量命名格式:"形容词+名词",形容词可省略;
-------------------------------------
拼写规则:小写开头。
-------------------------------------
一般情况:第一个单词一律用小写字母,其余单词由大写字母开头,且写法为"形容词+名词",单词间不用下划线分割。
正确例子:
int graphWidth; //Java风格
int newValue; //Java风格
错误例子:
int GraphWidth; //C++风格
int NewValue; //C++风格
int graph_width;
int new_value;
-------------------------------------
特殊情况:如果变量为指针变量:加前缀“ p”,表示“point”;如果名称的特殊写法更鲜为人知,则采用特殊写法;
如果变量为全局变量,根据实际情况,选择性的加前缀“ g”,表示“global”;
如果变量是静态变量,根据实际情况,选择性的加前缀“ s”,表示“static”。
正确例子:
int8u *pRdDat;
int8u i; //int8u j,k,m,n,x,y,z,temp,tmp;
int8u gOldPage; //保存页面寄存器;
int8u gLcdStatus;
int8u gCounter; //可能系统中有多个“counter”,建议加“g”
int8u *pStr; //指向字符串的指针
int8u sTickSum;
(3)、常量及宏定义命名格式:大写字母,单词或单词缩写间用下划线分割;
-------------------------------------
拼写规则:全部大写
-------------------------------------
一般情况:全用大写的字母,用下划线分割单词,且写法为”形容词+名词“。
例如:
#define STACK_SIZE 100
#define SYS_CLK (20000000UL)
#define MSG_TYPE int8u
-------------------------------------
特殊情况:如果宏功能带参数用起来跟函数功能一样,可以按照函数名拼写规则进行定义;
正确例子:
#define ChangeIntToHex(dec) ( ( ((dec)/10) <<4 ) + ((dec)%10) )
错误例子:
#define changeIntToHex(dec) ( ( ((dec)/10) <<4 ) + ((dec)%10) )
#define Change_IntToHex(dec) ( ( ((dec)/10) <<4 ) + ((dec)%10) )
-------------------------------------
注:单词拼写规则
-------------------------------------
一般情况:如果单词比较长,取单词的前面 n个字母或去掉单词的元音及个别字母形成缩写,但是如果有常用或特殊写法缩写,则采用。如果单词少于6个字母或为不常见单词,应尽量全部写出!
正确例子:
position 可缩写为 pos或posi;
destination 可缩写为 dest;
increment 应缩写为 inc;
message 应缩写为 msg;
control应缩写为 ctr或ctrl;
Transmit Control Protocol应缩写为 TCP
wait、delay、signal、device等没必要缩写
用到以下单词统一采用下面缩写格式:避免和其它单词配合代码行过长。
display缩写为 disp;
delete缩写为 del;
position 可缩写为 pos;
increment 缩写为 inc;
message 缩写为 msg;
control缩写为 ctrl;
initalize 缩写为 init;
value缩写为val;
同名单词拼写规则:
一般情况:一单词采用通常写法,另一末尾加下划线以避免重名。
例如:
char getSta_[4]={0xfe,0xfd,0xfb,0xf7};
char getSta;
if(getSta==getSta_[j])
二、注释规范
(0)头文件.H 注释格式
头文件一律采用如下格式:
/******************************************************************************/
/**
/** 模 块 名: -----------------------头文件.H--------------------------------
/** 功能描述: 模块功能说明
/**
/** 创 建 人: huangtiexiong 日期:2006-11-28 */
/** 修 改 人: 日期:2006-11-28 */
/** 其他说明: 其它需要说明的部分
/**
/******************************************************************************/
#ifndef __****_H__ //防止头文件被重复编译
#define __****_H__
/*************************************************
预定义声明
*************************************************/
…………预定义声明在这
/*************************************************
子函数声明、外部引用变量声明
*************************************************/
…………子函数声明在这
#endif
/*******************************************************************************
**** End Of File
*******************************************************************************/
(1)源文件.C 注释格式
源文件一律采用如下格式:
/******************************************************************************/
/**
/** 模 块 名: -------------------源文件.C------------------------------------
/** -----------------文件模版定义;------------------------------*/
/** 功能描述:
/**
/** 创 建 人: huangtiexiong 日期:2006-11-28 */
/** 修 改 人: 日期:2006-11-28 */
/** 其他说明:
/******************************************************************************/
#include "MCU_Config.h" //文件包含
/*************************************************
模块级变量申明
*************************************************/
…………模块级变量申明在这
/*************************************************
子函数定义
*************************************************/
/*******************************************************************************
*** 函 数 名: void main(void)
*** 功能描述:
*** 全局变量:
*** 输 入:
*** 输 出:
*** 创 建 人:huangtiexiong 日期:2006-11-28
*** 修 改 人: 日期:2006-11-28
*** 函数说明:
/******************************************************************************/
void main(void)
{
…………函数体部分
}
/*******************************************************************************
**** End Of File
*******************************************************************************/
(2)块 注释格式
采用/* ...... */格式,置于功能语句模块前。
正确格式:
/*************************************************
块注释说明部分
*************************************************/
(3)语句 注释格式
采用 //.......格式,置于说明语句之后,不单独占行。
正确格式:
g_OldPage = SFRPAGE; //保存页面寄存器
文章评论(0条评论)
登录后参与讨论