MTK编程规范试行Word文档下载推荐.docx

上传人:b****1 文档编号:15292620 上传时间:2022-10-29 格式:DOCX 页数:39 大小:41.85KB
下载 相关 举报
MTK编程规范试行Word文档下载推荐.docx_第1页
第1页 / 共39页
MTK编程规范试行Word文档下载推荐.docx_第2页
第2页 / 共39页
MTK编程规范试行Word文档下载推荐.docx_第3页
第3页 / 共39页
MTK编程规范试行Word文档下载推荐.docx_第4页
第4页 / 共39页
MTK编程规范试行Word文档下载推荐.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

MTK编程规范试行Word文档下载推荐.docx

《MTK编程规范试行Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MTK编程规范试行Word文档下载推荐.docx(39页珍藏版)》请在冰豆网上搜索。

MTK编程规范试行Word文档下载推荐.docx

6.2复合表达式19

6.3条件语句20

6.4循环语句21

第6章函数21

6.1函数的参数22

6.2函数的返回值22

6.3函数编写的一般性规则23

第7章内存管理25

第8章可测性25

第9章程序的效率26

第10章审查及测试28

附录A:

C代码审查表28

附录B:

ASCII完整码表32

附录C:

MTK重定义的数据类型33

第1章命名规则

比较著名的命名规则当推Microsoft公司的“匈牙利”法,该命名规则的主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”。

例如所有的字符变量均以ch为前缀,若是指针变量则追加前缀p。

如果一个变量由ppch开头,则表明它是指向字符指针的指针。

“匈牙利”法最大的缺点是烦琐,例如

inti,j,k;

floatx,y,z;

倘若采用“匈牙利”命名规则,则应当写成

intiI,iJ,ik;

//前缀i表示int类型

floatfX,fY,fZ;

//前缀f表示float类型

如此烦琐的程序会让绝大多数程序员无法忍受。

没有一种命名规则可以让所有的程序员赞同,程序设计教科书一般都不指定命名规则。

我们不要化太多精力试图发明世界上最好的命名规则,本章制定一种令大多数项目成员满意的命名规则,并在项目中贯彻实施。

1.1共性规则

首先我们来看一下这样一组命名KHDL,KHXL,GDLB,CZLB,CXLB,GYLB,你能知道他的意思么?

他们分别代表:

客户大类,客户小类,股东类别,操作类别,查询类别,柜员类别。

这是一个知名的软件公司在几年前的一个证券柜台系统的命名。

正因为这样他们招进新的程序员,不得不用大量的时间对他们进行培训,即使经过一个月的培训以后也没有人能全记住这些难懂的名词,不得不花大量的时间去查数据字典。

这个公司最后花了大量的人力物力,用了将近一年时间改进这套命名系统。

所以我们介绍的第一条规则就是:

【规则1-1-1】标识符应当直观且可以拼读,可望文知意,不必进行“解码”。

标识符采用英文单词或其组合,便于记忆和阅读。

切忌使用汉语拼音来命名。

如果单词不会写,请打开“金山词霸”,或者打开google中文翻译。

程序中的英文单词一般不会太复杂,用词应当准确。

例如不要为了省几个字符把CurrentValue写成NowValue。

【规则1-1-2】在MTK平台中编程,我们采用英文首字母大写的方式来分隔单词,用下划线来分隔前缀。

命名的方式有多种,常用的有英文首字线大写方式,如AddUser;

英文单词全部小写,用下划线划分单词,如add_user,这两种方式。

MTK本身不同的程序也采用了这两种方式,这两种方式都是可以的。

但是为了公司内部的统一,我们采用英文首字母大写的方式来强制统一(变量等第一个单词的首字母可以不大写)。

【规则1-1-3】标识符的长度应当符合“minlength&

&

maxinformation”原则。

一般来说,长名字能更好地表达含义,所以函数名、变量名、类名长达十几个字符不足为怪。

那么名字是否越长约好?

不见得!

例如变量名MaxVal就比MaxValueUntilOverflow好用。

单字符的名字也是有用的,常见的如i,j,k,m,n,x,y,z等,它们通常可用作函数内的局部变量。

【规则1-1-4】标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。

新启用一个缩写,必须进行必要的注释说明。

较短的单词可通过去掉“元音”形成缩写;

较长的单词可取单词的头几个字母形成缩写;

一些单词有大家公认的缩写。

示例:

如下单词的缩写能够被大家基本认可。

temp可缩写为tmp;

flag可缩写为flg;

statistic可缩写为stat;

increment可缩写为inc;

message可缩写为msg;

result可缩写为ret;

value可缩写为val;

【规则1-1-5】用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。

下面是一些在软件中常用的反义词组。

add/remove;

begin/end;

create/destroy;

insert/delete;

first/last;

get/release;

increment/decrement;

set/get;

add/delete;

lock/unlock;

open/close;

min/max;

old/new;

start/stop;

next/previous;

source/target;

show/hide;

send/receive;

source/destination;

cut/paste;

up/down

【规则1-1-6】除非是数字运算,程序中不允许出现数字标识符。

在以往调程序调试过程中,我们要花费大量的时间去理解程序中数字的意义,因此以下写法是错误的。

switch(OperationType)

{

case0:

//ivr

DoSomething();

break;

case1:

//sms

DoOtherthing();

case2:

//wap

…..

default:

}

以上代码加入注释本身是没有什么错的,但现实中发现,如果另外的程序员接手这段代码,扩展这段代码,需要一定的时间。

因为他在写其它程序的类似处理的时候,他的0代表sms,1代表IVR。

程序中如果处理出现错误,同样我们也需要大量的时间来纠错。

正确的写法如下:

#defineOPERATION_TYPE_IVR0

#defineOPERATION_TYPE_SMS1

#defineOPERATION_TYPE_WAP2

……

caseOPERATION_TYPE_IVR:

caseOPERATION_TYPE_SMS:

caseOPERATION_TYPE_WAP:

这样,就不用去理解0,1,2的意思了。

MTK本身的代码这一部分还是做得挺好的。

【规则1-1-7】为了防止某一软件库中的一些标识符和其它软件库中的冲突,可以为各种标识符加上能反映软件性质的前缀。

比如说我们优化、改进、扩展了MTK的函数,我们就会加上公司名字的前缀。

同样一些比较常用的函数,比如说字符编码的转换函数,为了避免跟其它第三方软件的函数冲突,我们也需要加上公司前缀。

【规则1-1-8】全局变量使用g_前缀,静态变量使用s_前缀。

1.2我公司的MTK开发命名规则

【规则1-2-1】公司前缀只允许以下两种形式:

Worthful_或者WT_。

公司名缩写出再过WF,YSCF这样的名称,在此废除。

【规则1-2-2】应用的目录名为首字母大写的目录名,头文件放在应用名+Inc的目录下,源文件放在应用名+Src的目录下。

如应用百事通,取名KnowAll,头文件放在KnowAllInc下面,源文件放在KnowAllSrc下面。

【规则1-2-3】应用宏开关用双下划线开始,双下划线结束。

如:

__KNOW_ALL__;

【规则1-2-4】防重复引用,放在文件头的宏,使用双下划线开始,如果头文件以“_H”结束,如果是源文件使用”_C”结束。

#ifndef__KNOW_ALL_H,#ifndef__KNOW_ALL_C

【规则1-2-5】应用内的常量,宏全用大写的字母,用下划线分割单词。

如constintWT_SMS_SEND_NUMBER3

WT_SMS_NUMBER,WT_SMS_CM_INFO,WT_SMS_CU_INFO;

【规则1-2-6】定义枚举用ENUM_当前缀的大写字母,用下划线分割单词。

枚举名用_ENUM为后缀,

typedefenum

ENUM_EBR_FONT_SIZE_SMALL=0,

ENUM_EBR_FONT_SIZE_MEDIUM,

ENUM_EBR_FONT_SIZE_LARGE

}EBR_FONT_SIZE_ENUM;

【规则1-2-7】定义结构名用_STRU或_STRUCT为后缀,

typedefstruct

S8file_name[(FMGR_MAX_FILE_LEN+1)*ENCODING_LENGTH];

S8file_ext[(FMGR_MAX_EXT_LEN+1)*ENCODING_LENGTH];

FMGR_FILTERfile_type;

U32file_size;

U16index;

MYTIMEtime;

U8attribute;

BOOLis_used;

BOOLis_short;

BOOLis_able_display;

}FMGR_FILE_INFO_STRU;

【规则1-2-8】定义变量,不要同时使用U8,unsignedchar两套定义。

MTK本身定义了一套变量类型,我们要么使用MTK的,要么使用C本身的变量类型,不要两套混用。

【规则1-2-9】变量和参数用小写字母开头的单词组合而成。

变量和参数的名字应当使用“名词”或者“形容词+名词”。

如tmpValue,oldValue,currValue;

【规则1-2-10】函数名用大写字母开头的单词组合而成,应当使用“动词”或者“动词+名词”(动宾词组)。

如GetField,SetField,InitData。

1.3注释

不要把程序和注释看作两个部分,注释是程序的一部分。

一般注释能达到程序量的20%或以上。

【规则1-3-1】通过对函数、变量、结构等正确的命名以及合理地组织代码的结构,使代码成为自注释的,合理减少注释量。

AddUser();

/*添加用户*/

以上注释显得多余。

注释的目的是解释代码的目的、功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止没必要的重复注释信息。

【规则1-3-2】全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。

/*TheErrorCodewhenSCCPtranslateGlobalTitlefailure,asfollows*///变量作用、含义

/*0-SUCCESS1-GTTableerror2-GTerrorOthers-nouse*///变量取值范围

/*onlyfunctionSCCPTranslate()inthis

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1