原创 我的编程规范V1.0

2007-1-11 00:31 4809 7 7 分类: 软件与OS

                           我的编程规范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;   //保存页面寄存器

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /3 下一条