首页 公司软件编程规范和范例审批稿

公司软件编程规范和范例审批稿

举报
开通vip

公司软件编程规范和范例审批稿YKKstandardizationoffice【YKK5AB-YKK08-YKK2C-YKK18】公司软件编程规范和范例XX公司软件编程规范和范例【最新资料,WORD文档,可编辑修改】程序块要采用缩进风格编写,缩进的空格数为4个。说明:对于由开发工具自动生成的代码可以有不一致。相对独立的程序块之间、变量说明之后必须加空行。示例:如下例子不符合规范。if(!valid_ni(ni)){...epssn_index;repssn_ni=ssn_data[index].ni;应如下书写:if(!valid_ni(ni)...

公司软件编程规范和范例审批稿
YKKstandardizationoffice【YKK5AB-YKK08-YKK2C-YKK18】公司软件编程 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 和范例XX公司软件编程规范和范例【最新资料,WORD文档,可编辑修改】程序块要采用缩进风格编写,缩进的空格数为4个。说明:对于由开发工具自动生成的代码可以有不一致。相对独立的程序块之间、变量说明之后必须加空行。示例:如下例子不符合规范。if(!valid_ni(ni)){...epssn_index;repssn_ni=ssn_data[index].ni;应如下书写:if(!valid_ni(ni)){...epssn_index;repssn_ni=ssn_data[index].ni;较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。示例:=NO7_TO_STAT_PERM_COUNT_LEN+STAT_SIZE_PER_FRAM*sizeof(_UL);act_task_table[frame_id*STAT_TASK_CHECK_NUMBER+index].occupied=stat_poi[index].occupied;act_task_table[taskno].duration_true_or_false=SYS_get_sccp_statistic_state(stat_item);report_or_not_flag=((tasknoid=pid;.){.)*/文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。/*************************************************Copyright(C),1988-1999,HuaweiTech.Co.,Ltd.Filename:...History:Date:Author:Modification:2....*************************************************/源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。/************************************************************Copyright(C),1988-1999,HuaweiTech.Co.,Ltd.FileName:Author:Version:Date:Description:...History:epssn_index;repssn_ni=ssn_data[index].ni;例2:repssn_ind=ssn_data[index].repssn_index;repssn_ni=ssn_data[index].ni;/*getreplicatesubsystemindexandnetindicator*/应如下书写/*getreplicatesubsystemindexandnetindicator*/repssn_ind=ssn_data[index].repssn_index;repssn_ni=ssn_data[index].ni;对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其物理含义。变量、常量、宏的注释应放在其上方相邻位置或右方。示例:/*activestatistictasknumber*/#defineMAX_ACT_TASK_NUMBER1000#defineMAX_ACT_TASK_NUMBER1000/*activestatistictasknumber*/数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,必须加以注释。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释放在此域的右方。示例:可按如下形式说明枚举/数据/联合结构。/*sccpinterfacewithsccpuserprimitivemessagename*/enumSCCP_USER_PRIMITIVE{N_UNITDATA_IND,/*sccpnotifysccpuserunitdatacome*/N_NOTICE_IND,/*sccpnotifyuserthenetworkcannot*//*transmissionthismessage*/N_UNITDATA_REQ,/*sccpuser'sunitdatatransmissionrequest*/};全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。示例:/*TheErrorCodewhenSCCPtranslate*//*GlobalTitlefailure,asfollows*/.){...break;}else{ProcessCFW_B();.标识符命名除非必要,不要用数字或较奇怪的字符来定义标识符。示例:如下命名,使人产生疑惑。#define_EXAMPLE_0_TEST_#define_EXAMPLE_1_TEST_voidset_sls00(BYTEsls);应改为有意义的单词命名#define_EXAMPLE_UNIT_TEST_#define_EXAMPLE_ASSERT_TEST_voidset_udt_msg_sls(BYTEsls);在同一软件产品内,应 规划 污水管网监理规划下载职业规划大学生职业规划个人职业规划职业规划论文 好接口部分标识符(变量、结构、函数及常量)的命名,防止编译、链接时产生冲突。说明:对接口部分的标识符应该有更严格限制,防止冲突。如可规定接口部分的变量与常量之前加上“模块”标识等。用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。说明:下面是一些在软件中常用的反义词组。===============================================================add/removebegin/endcreate/destroyinsert/delete?first/lastget/releaseincrement/decrement?put/getadd/deletelock/unlockopen/closemin/maxold/new?start/stopnext/previoussource/target?show/hidesend/receivesource/destinationcut/pasteup/down=======================================================================================示例:intmin_sum;intmax_sum;intadd_user(BYTE*user_name);intdelete_user(BYTE*user_name);除了编译开关/头文件等特殊应用,应避免使用_EXAMPLE_TEST_之类以下划线开始和结尾的定义。标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。说明:较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词有大家公认的缩写。示例:如下单词的缩写能够被大家基本认可。temp可缩写为tmp;临时flag可缩写为flg;标志statistic可缩写为stat;统计increment可缩写为inc;增量message可缩写为msg;消息命名中若使用特殊约定或缩写,则要有注释说明。说明:应该在源文件的开始之处,对文件中所使用的缩写或约定,特别是特殊的缩写,进行必要的注释说明。自己特有的命名风格,要自始至终保持一致,不可来回变化。说明:个人的命名风格,在符合所在项目组或产品组的命名 规则 编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf 的前提下,才可使用。(即命名规则中没有规定到的地方才可有个人命名风格)。对于变量命名,禁止取单个字符(如i、j、k...),建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i、j、k作局部循环变量是允许的。说明:变量,尤其是局部变量,如果用单个字符表示,很容易敲错(如i写成j),而编译时又检查不出来,有可能为了这个小小的错误而花费大量的查错时间。示例:下面所示的局部变量名的定义方法可以借鉴。intliv_Width其变量名解释如下:l局部变量(Local)(其它:g全局变量(Global)...)i数据类型(Interger)v变量(Variable)(其它:c常量(Const)...)Width变量含义这样可以防止局部变量与全局变量重名。命名规范必须与所使用的系统风格保持一致,并在同一项目中统一,比如采用UNIX的全小写加下划线的风格或大小写混排的方式,不要使用大小写与下划线混排的方式,用作特殊标识如标识成员变量或全局变量的m_和g_,其后加上大小写混排的方式是允许的。示例:Add_User不允许,add_user、AddUser、m_AddUser允许。可读性源程序中关系较为紧密的代码应尽可能相邻。说明:便于程序阅读和查找。示例:以下代码布局不太合理。=10;char_poi=str;=5;若按如下形式书写,可能更清晰一些。=10;=5;runk_state==0){Trunk[index].trunk_state=1;...runk_state==TRUNK_IDLE){Trunk[index].trunk_state=TRUNK_BUSY;.....}EXAM_BIT;如下是IntelCPU生成短整数及位域的方式。去掉没必要的公共变量。说明:公共变量是增大模块间耦合的原因之一,故应减少没必要的公共变量以降低模块间的耦合度。仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。说明:在对变量声明的同时,应对其含义、作用及取值范围进行注释说明,同时若有必要还应说明与其它变量的关系。明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。说明:明确过程操作变量的关系后,将有利于程序的进一步优化、单元测试、系统联调以及代码维护等。这种关系的说明可在注释或文档中描述。示例:在源文件中,可按如下注释形式说明。RELATIONSystem_InitInput_RecPrint_RecStat_ScoreStudentCreateModifyAccessAccessScoreCreateModifyAccessAccess,Modify注:RELATION为操作关系;System_Init、Input_Rec、Print_Rec、Stat_Score为四个不同的函数;Student、Score为两个全局变量;Create表示创建,Modify表示修改,Access表示访问。其中,函数Input_Rec、Stat_Score都可修改变量Score,故此变量将引起函数间较大的耦合,并可能增加代码测试、维护的难度。当向公共变量传递数据时,要十分小心,防止赋与不合理的值或越界等现象发生。说明:对公共变量赋值时,若有必要应进行合法性检查,以提高代码的可靠性、稳定性。防止局部变量与公共变量同名。说明:若使用了较好的命名规则,那么此问题可自动消除。严禁使用未经初始化的变量作为右值。说明:特别是在C/C++中引用未经赋值的指针,经常会引起系统崩溃。内存:012...(从低到高,以字节为单位)examexam低字节exam高字节内存:0bit1bit2bit...(字节的各“位”)EXAM_BITA1A2A3如下是68360CPU生成短整数及位域的方式。内存:012...(从低到高,以字节为单位)examexam高字节exam低字节内存:7bit6bit5bit...(字节的各“位”)EXAM_BITA1A2A3说明:在对齐方式下,CPU的运行效率要快得多。示例:如下图,当一个long型数(如图中long1)在内存中的位置正好与内存的字边界对齐时,CPU存取这个数只需访问一次内存,而当一个long型数(如图中的long2)在内存中的位置跨越了字边界时,CPU存取这个数就需要多次访问内存,如i960cx访问这样的数需读内存三次(一个BYTE、一个SHORT、一个BYTE,由CPU的微代码执行,对软件透明),所有对齐方式下CPU的运行效率明显快多了。0108162432----------------------------|long1|long1|long1|long1|----------------------------||||long2|----------------------------|long2|long2|long2||----------------------------|....|函数、过程16-1:对所调用函数的错误返回码要仔细、全面地处理16-2:明确函数功能,精确(而不是近似)地实现函数设计16-3:编写可重入函数时,应注意局部变量的使用(如编写C/C++语言的可重入函数时,应使用auto即缺省态局部变量或寄存器变量)说明:编写C/C++语言的可重入函数时,不应使用static局部变量,否则必须经过特殊处理,才能使函数具有可重入性。16-4:编写可重入函数时,若使用全局变量,则应通过关中断、信号量(即P、V操作)等手段对其加以保护说明:若对所使用的全局变量不加以保护,则此函数就不具有可重入性,即当多个进程调用此函数时,很有可能使有关全局变量变为不可知状态。示例:假设Exam是int型全局变量,函数Squre_Exam返回Exam平方值。那么如下函数不具有可重入性。unsignedintexample(intpara){unsignedinttemp;Exam=para;.....yDataPtr,则可以通过以下宏定义来代替:#definepSOCKDATATheReceiveBuffer[FirstScoket].byDataPtr〔七〕=====[可测性]=====17-1:在同一项目组或产品组内,要有一套统一的为集成测试与系统联调准备的调测开关及相应打印函数,并且要有详细的说明说明:本规则是针对项目组或产品组的。17-2:在同一项目组或产品组内,调测打印出的信息串的格式要有统一的形式。信息串中至少要有所在模块名(或源文件名)及行号说明:统一的调测信息格式便于集成测试。17-3:编程的同时要为单元测试选择恰当的测试点,并仔细构造测试代码、测试用例,同时给出明确的注释说明。测试代码部分应作为(模块中的)一个子模块,以方便测试代码在模块中的安装与拆卸(通过调测开关)说明:为单元测试而准备。17-4:在进行集成测试/系统联调之前,要构造好测试环境、测试项目及测试用例,同时仔细 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 并优化测试用例,以提高测试效率说明:好的测试用例应尽可能模拟出程序所遇到的边界值、各种复杂环境及一些极端情况等。17-5:使用断言来发现软件问题,提高代码可测性说明:断言是对某种假设条件进行检查(可理解为若条件成立则无动作,否则应报告),它可以快速发现并定位软件问题,同时对系统错误进行自动报警。断言可以对在系统中隐藏很深,用其它手段极难发现的问题进行定位,从而缩短软件问题定位时间,提高系统的可测性。实际应用时,可根据具体情况灵活地设计断言。示例:下面是C语言中的一个断言,用宏来设计的。(其中NULL为0L)#ifdef_EXAM_ASSERT_TEST_.....ength;rect_width_sum+=rect[ind].width;}}因为判断语句与循环变量无关,故可如下改进,以减少判断次数。if(data_type==RECT_AREA){for(ind=0;indMAX_GT_LENGTH){returnGT_LENGTH_ERROR;../*globaltitlelengtherror*/if(gt_len>MAX_GT_LENGTH){free(gt_buf);...);}}}.......,rect[index].b);}112-3:使用宏时,不允许参数发生变化示例:如下用法可能导致错误。#defineSQUARE(a)((a)*(a))inta=5;intb;b=SQUARE(a++);//结果:a=7,即执行了两次增1。正确的用法是:b=SQUARE(a);a++;//结果:a=6,即只执行了一次增1。===============================End===================================
本文档为【公司软件编程规范和范例审批稿】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
乐观
暂无简介~
格式:doc
大小:470KB
软件:Word
页数:0
分类:企业经营
上传时间:2021-09-03
浏览量:1