编程不规范两行同事规则规范(命名变量函数缩写注释)

无论是什么编程语言,都需要有一定的规则去规范它,让我们看懂,看的舒服。
编程规范的宗旨是:代码具有良好的阅读性我们做单片机开发经常会碰到多人同时开发,如果一个乱七八糟的代码拿过来,谁能搞懂到底要表达个什么呢。
小编就从以下几个方面介绍经常会用到但可能不会这注意编程基本规范。
排版注释标识符函数排版0、代码缩进空格数为4个BOOL BufClr(UINT8 dest,UINT32 size){ if(NULL ==dest || NULL==size) { return FALSE; } do { dest++ = NULL; }while(--size!=0); return TRUE;}1、较长的语句要分两行书写uncrc=calcCRC16(Packet.p,unlen);if((UINT8) uncrc != Packet.down_ser.mCrc[0] \ ||(UINT8)(uncrc>>8)!= Packet.down_ser.mCrc[1]){ BELL(ON);}2、函数参代码的参数过长时,分多行书写。
UARTSendAndRecv(UINT8 ucSendBuf, UINT8 ucSendLength, UINT8 ucRecvBuf, UINT8 ucRecvLength){……}3、if、do、while、switch、for、case、default等关键字,需加上大括号{}。
if(bSendEnd){ BELL(ON);}else{ BELL(OFF);}//--------------------------for(i=0; i< ucRecvLength; i++){ ucRecvBuf[i]=i;}//--------------------------switch(ucintStatus){ case USB_INT_EP2_OUT: { USBCiEP2Send(USBMainBuf,ucrecvLen); USBCiEP1Send(USBMainBuf,ucrecvLen); } break; case USB_INT_EP2_IN: { USBCiWriteSingleCmd (CMD_UNLOCK_USB); } break;……}注释0、代码的主食量要保持在代码的总量的20%以上,且无特殊情况不超过40%,代码不能太多也不能太少,要以一目了然为前提。
1、说明性文件必选在文件开始处着重说明,例如.c,.h文件/Author:一枚科技仔File name: main.cExplain:Start date:--------------------------------------------------------------Completion:Modification date:/#include <stdio.h>void main(void){ ;}2、函数头应该进行注释,例如函数名称、输入参数、返回值、功能说明。
/ Function name: USBCiEP2Send input: buf 要发送数据的缓冲区 len 要发送数据的长度 output: 无 Functional description: 向端点2 写连续的数据/void USBCiEP2Send(UINT8 buf,UINT8 len){ USBCiWriteSingleCmd (CMD_WR_USB_DATA7); USBCiWritePortData (buf,len);}3、全局变量要注释其功能,若关键的局部变量同样需要注释其功能。
int sys_msg // 存储系统消息/ ........../void SYSSetMsgPriority(void){ SYSMSG Msgt;//临时存储消息 UINT8 i;}4、复杂的宏定义也需要加上注释。
/ SYS_MSG_MAP 建立一个消息映射 宏参数NAME:消息映射表的名字 宏参数NUM_OF_MSG:消息映射的个数/#define SYS_MSG_MAP(NAME,NUM_OF_MSG) do\ {\ DEFINE_MSG_NAME((NAME));\ UINT8 i;\ for(i=0;i< NUM_OF_MSG;i++)\ {\ ININ_CUR_MSG(i)\ }\ }while(0)5、复杂的结构体同样要加上注释。
/ 奇偶校验结构体/typedef struct _ PKT_PARITY{ UINT8 m_ucHead1; //首部1 UINT8 m_ucHead2; //首部2 UINT8 m_ucOptCode; //操作码 UINT8 m_ucDataLength; //数据长度 UINT8 m_szDataBuf[16]; //数据 UINT8 m_ucParity; //奇偶校验值}PKT_PARITY;6、相对独立的语句组注释。
对这一组语句做特别说明,写在语句组上侧,和此语句组之间不留空行,与当前语句组的缩进一致。
注意,说明语句组的注释一定要写在语句组上面,不能写在语句组下面。
//定义保存外部输入参数unsigned char in_msg;标识符0、变量的命名采用匈牙利命名法。
命名规则的主要思想是“在变量中加入前缀以增进人们对程序的理解”。
例如平时声明 32位整型变量 Length对应使用匈牙利命名法为 unLength。
现在列出经常用到的变量类型。
变量命名规则1、变量命名要注意缩写而且让人简单易懂,若是特别缩写要详细说明。
经常用到的缩写如下:Count 可缩写为 CntMessage 可缩写为 MsgPacket 可缩写为 PktTemp 可缩写为 Tmp不经常用到的缩写,要注意做注释:SerialCommunication 可缩写为SrlComm //串口通信变量SerialCommunicationStatus 可缩写为SrlCommStat //串口通信状态变量2、全局变量和全局函数的命名一定要详细,不惜多用几个单词,例如函数 UARTPrintfStringForLCD,因为它们在整个项目的许多源文件中都会用到,必须让使用者明确这个变量或函数是干什么用的。
局部变量和只在一个源文件中调用的内部函数的命名可以。
简略一些,但不能太短,不要使用单个字母做变量名,只有一个例外:用i、j 、k 做循环变量是可以的。
3、用于编译开关的文件头,必须加上当前文件名称,防止编译时产生冲突。
例如在UARTInterface.h 头文件中,必须加上以下内容#ifndef __UARTINTERFACE_H__#define __UARTINTERFACE_H__extern void UARTPrintfString(CONST INT8 str);extern void UARTSendNBytes(UINT8 ucSendBytes,UINT8 ucLen);………… //其他外部声明的代码#endif4、针对我们初学编程最需要注意的一点是:禁止用汉语拼音作为标识符名称,可读性极差。
函数0、函数命名要规范,不同层有不同的格式来命名。
函数命名规范1、函数如果不提供要不调用,在当前文件加上static关键字static void WriteDatToUsb(UINT8 dat){ USB_CS=0; USB_DATA_OUTPUT=0xff; USB_A0=USB_DAT_MODE; USB_WR=0; DelayNus(20); USB_DATA_OUTPUT=dat; DelayNus(20); USB_CS=1; USB_DATA_OUTPUT=0xff; USB_WR=1;}写在最后0、程序是给人看的,不是给机器看的。
形成良好的编程规范必然会使代码更加易于阅读,更利于团队协作式开发。
1、“匈牙利”命名法是必修课,易于理解变量的类型。
它是一种编程命名规范。
基本原则是:变量名=类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。
命名要基于容易记忆容易理解的原则。
保证名字的连贯性是非常重要的。
2、函数命名:属性+类型+对象,类似于匈牙利命名法。
例如 USBCiEP0Send 函数可以分解为USB+Ci+功能。
要学习C语言,那得如何获取C语言资料,只需简单三步:0、关注小编1、点赞并转发本文3、私信小编发送\"05\",即可获得大量C语言,单片机编程学习书籍与资料。
关注+点赞+转发,是我创作的动力,了解编程规则,让程序在阅读上更加方便。
希望大家继续支持我这枚小小科技仔。
编程不规范两行同事规则规范(命名变量函数缩写注释)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息