- 2022-08-30 发布 |
- 37.5 KB |
- 19页
申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
文档介绍
计算机,编程规范
计算机,编程规范 篇一:编程规范 1Java编程规范 排版 规则 规则1程序块要采用缩进风格编写,缩进的空格数为4个,不允许使用TAB缩进。(+) 说明:缩进使程序更易阅读,使用空格缩进可以适应不同操作系统与不同开发工具。 规则2分界符(如大括号?{?和?}?)应各独占一行,同时与引用它们的语句左对齐。在函数体 的开始、类和接口的定义、以及if、for、do、while、switch、case语句中的程序 或者static、,synchronized等语句块中都要采用如上的缩进方式。(+) 示例:if(a>b){doStart();} 规则3较长的语句、表达式或参数(>80字符)要分成多行书写,长表达式要在低优先级操作 符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐, 语句可读。(+) 示例:\n if(()) { ("Sessiondestroyed,call-id" +().getCallId()); } 规则4不允许把多个短语句写在一行中,即一行只写一条语句(+) 说明:阅读代码更加清晰示例:如下例子不符合规范。Objecto=newObject();Objectb=null; 规则5if,for,do,while,case,switch,default等语句自占一行,且if,for,do,while,switch等语句 的执行语句无论多少都要加括号{},case的执行语句中如果定义变量必须加括号{}。 (+) 说明:阅读代码更加清晰,减少错误产生示例:if(a>b) { doStart(); } casex:{inti=9;} 规则6相对独立的程序块之间、变量说明之后必须加空行。(+)\n 说明:阅读代码更加清晰 示例: if(a>b) { } //此处是空行 return; 规则7在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者 前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如.),后不应加 空格。(+) 说明:阅读代码更加清晰 示例: if(a==b) { } a*=2; ();doStart(); 建议 建议1类属性和类方法不要交叉放置,不同存取范围的属性或者方法也尽量不要交叉放置。\n (+) 格式: 类定义 { 类的公有属性定义 类的保护属性定义 类的私有属性定义 类的公有方法定义 类的保护方法定义 Page2,Total18 类的私有方法定义 } 建议2修饰词按照指定顺序书写:[访问权限][static][final]。(+) 示例:publicstaticfinalStringstr=“abc”; 注释 规则 规则1源程序注释量必须在30%以上。(+) 说明:由于每个文件的代码注释不一定都可以达到30%,建议以一个系统内部模块作为单位进行检查 规则2包的注释:写入一个名为的HTML格式的说明文件放入包所在路径。包的\n 注释内容:简述本包的作用、详细描述本包的内容、产品模块名称和版本、公 司版权。(+) 说明:方便JavaDoc收集,方便对包的了解 示例: com/huawei/iin/websmap/comm/ 一句话简述。 详细描述。 产品模块名称和版本 公司版权信息 示例: 为WEBSMAP提供通信类,上层业务使用本包的通信类与SMP-B进行通信。 详细描述。。。。。。。。 IINV100R001WEBSMAP (C)版权所有XX-XX华为技术有限公司\n 规则3类和接口的注释放在class或者interface关键字之前,import关键字之后。注 释主要是一句话功能简述与功能详细描述。类注释使用“/***/”注释方式(+) Page3,Total18 说明:方便JavaDoc收集,没有import可放在package之后。注释可根据需要列出:作者、内容、功能、与其它类的关系等。功能详细描述部分说明该类或者接口的功能、作用、使用方法和注意事项,每次修改后增加作者和更新版本号和日期,@since表示从那个版本开始就有这个类或者接口,@deprecated表示不建议使用该类或者接口。 /** *〈一句话功能简述〉 *〈功能详细描述〉 *@author[作者](必须) *@see[相关类/方法](可选) *@since[产品/模块版本](必须) *@deprecated(可选) */ 示例:\n package; import*; /** *LogManager类集中控制对日志读写的操作。 *全部为静态变量和静态方法,对外提供统一接口。分配对应日志类型的读写器, *读取或写入符合条件的日志纪录。 *@author张三,李四,王五 *@seeLogIteraotor *@seeBasicLog *@since */ publicclassLogManager 规则4类属性(成员变量)、公有和保护方法注释:写在类属性、公有和保护方法上面,注释方 式为“/***/”.(+) 示例: /** *注释内容 */ privateStringlogType; /**\n *注释内容 */ publicvoidwrite() 规则5公有和保护方法注释内容:列出方法的一句话功能简述、功能详细描述、输入参数、 输出参数、返回值、异常等。(+) 格式: Page4,Total18 /** *〈一句话功能简述〉 *〈功能详细描述〉 *@param[参数1][参数1说明] *@param[参数2][参数2说明] *@return[返回类型说明] *@exception/throws[异常类型][异常说明] *@see[类、类#方法、类#成员] *@since[起始版本] *@deprecated */ 说明:@since表示从那个版本开始就有这个方法,如果是最初版本就存在的方法无需说明;@exception或throws列出可能仍出的异常;@deprecated表示不建议使用该方法。\n 示例: /** *根据日志类型和时间读取日志。 *分配对应日志类型的LogReader,指定类型、查询时间段、条件和反复器缓冲数,*读取日志记录。查询条件为null或0的表示没有限制,反复器缓冲数为0读不到日志。*查询时间为左包含原则,即[startTime,endTime)。 *@paramlogTypeName日志类型名(在配置文件中定义的) *@paramstartTime查询日志的开始时间 *@paramendTime查询日志的结束时间 *@paramlogLevel查询日志的级别 *@paramuserName查询该用户的日志 *@parambufferNum日志反复器缓冲记录数 *@return结果集,日志反复器 *@since */ publicstaticLogIteratorread(StringlogType,DatestartTime, DateendTime,intlogLevel,StringuserName,intbufferNum) 规则6\n对于方法内部用throw语句抛出的异常,必须在方法的注释中标明,对于所调用的其他 方法所抛出的异常,选择主要的在注释中说明。对于非RuntimeException,即throws 子句声明会抛出的异常,必须在方法的注释中标明。(+) 说明:异常注释用@exception或@throws表示,在JavaDoc中两者等价,但推荐用@exception标注Runtime异常,@throws标注非Runtime异常。异常的注释必须说明该异常的含义及什么条件下抛出该异常。 规则7注释应与其描述的代码相近,对代码的注释应放在其上方,并与其上面的代码用空行隔 开,注释与所描述内容进行同样的缩排。(+) 说明:可使程序排版整齐,并方便注释的阅读与理解。 示例: /* Page5,Total18 篇二:计算机软件开发规范GB8566-88 标准:计算机软件开发规范GB8566-88 目的:详细规定计算机软件开发过程胡各个阶段及没法儿阶段胡任务、实施步骤、实施要求、完成标志及交付文件。为软件开人员和管理人员提供一系列之有效的准则、方法和规范。\n 作用:有利于提高开发的控制和管理,缩短开发时间和减少维护次数,便于开发和维护人员之间的协作、交流,是软件开发更加有成效。 软件的生存周期:SystemsDevelopmentLifeCycle(SDLC)可行性研究与计划需求分析概要设计详细设计实现组装测试确认测试使用和维护 按照人们所习惯的粗分方法把上面8个阶段划分为计划、开发和维护3个阶段,在概述其他两个阶段的基础上重点介绍软件的开发过程 2.软件开发方法 瀑布模型 瀑布模型阶段任务 渐进模型 V模型 双v模型 螺旋模型 快速原型(RapidPrototype)模型:快速原型模型在功能上等价于产品的一个子集。注意,这里说的是功能上。瀑布模型的缺点就在于不够直观,快速原型法就解决了这个问题。一般来说,根据客户的需要在很短的时间内解决用户最迫切需要,完成一个可以演示的产品。这个产品只是实现部分的功能(最重要的)。它最重要的目的是为了确定用户的真正需求。\n 篇三:软件编程规范和范例 软件编程规范和范例 目录 1排版..............................................................................................................................................1 2注释..............................................................................................................................................4 3标识符命名.................................................................................................................................11 4可读性.........................................................................................................................................13 5变量、结构\n.................................................................................................................................15 6函数、过程.................................................................................................................................21 7可测性.........................................................................................................................................29 8程序效率.....................................................................................................................................33 9质量保证.....................................................................................................................................37 10代码编辑、编译、审查...........................................................................................................44 11\n代码测试、维护.......................................................................................................................46 12宏..............................................................................................................................................47 1排版 11-1:程序块要采用缩进风格编写,缩进的空格数为4个。 说明:对于由开发工具自动生成的代码可以有不一致。 11-2:相对独立的程序块之间、变量说明之后必须加空行。 示例:如下例子不符合规范。 if(!valid_ni(ni)) { ...//programcode } repssn_ind=ssn_data[index].repssn_index; repssn_ni=ssn_data[index].ni; 应如下书写 if(!valid_ni(ni))\n { ...//programcode } repssn_ind=ssn_data[index].repssn_index; repssn_ni=ssn_data[index].ni; 11-3:较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。 示例: perm_count_=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=((taskno &&(n7stat_stat_item_valid(stat_item)) &&(act_task_table[taskno].result_data!=0));\n 11-4:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。 示例: if((taskno &&(n7stat_stat_item_valid(stat_item))) { ...//programcode } for(i=0,j=0;(i &&(j { ...//programcode } for(i=0,j=0; (i i++,j++) { ...//programcode } 11-5:若函数或过程中的参数较长,则要进行适当的划分。 示例: n7stat_str_compare((BYTE*)&stat_object, (BYTE*)&(act_task_table[taskno].stat_object), sizeof(_STAT_OBJECT)); n7stat_flash_act_duration(stat_item,frame_id\n*STAT_TASK_CHECK_NUMBER +index,stat_object); 11-6:不允许把多个短语句写在一行中,即一行只写一条语句。 示例:如下例子不符合规范。 =0;=0; 应如下书写 =0; =0; 11-7:if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。 示例:如下例子不符合规范。 if(pUserCR==NULL)return; 应如下书写: if(pUserCR==NULL) { return; } 11-8:对齐只使用空格键,不使用TAB键。\n 说明:以免用不同的编辑器阅读程序时,因TAB键所设置的空格数目不同而造成程序布局不整齐,不要使用BC作为编辑器合版本,因为BC会自动将8个空格变为一个TAB键,因此使用BC合入的版本大多会将缩进变乱。 11-9:函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。 11-10:程序块的分界符(如C/C++语言的大括号?{?和?}?)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。 示例:如下例子不符合规范。 for(...){ ...//programcode } if(...) { ...//programcode } voidexample_fun(void) { ...//programcode }\n 应如下书写。 for(...) { ...//programcode } if(...) { ...//programcode }查看更多