版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
BeyondTechnology编码规范及代码检查软件开发事业部程文治2023/2/6编码规范内容目的源程序命名规范空白的使用注释类接口语句性能优化常识其它代码规范的目的代码的编写保持一致性提高代码的可读性和可维护性方便团队中的成员之间共享代码易于代码的回顾……※源程序源程序命名名字:源程序中定义的class或interface的名字后缀:.java供发布的文件名字:应该是有代表性的后缀:*.jar(推荐使用);或*.zip、*.ear、*.war等源文件的组织应按如下顺序书写,并且各元素之间至少一个空行分隔:1)版本信息和版权声明2)包的声明3)引用声明4)类或接口的声明源程序源文件的组织版本信息和版权声明作为源文件开始。*建议使用开发工具(如Eclipse)的注释功能自动完成此类工作。*使用部门统一的格式化和模版文件(只能在Eclipse中使用)。源程序源文件的组织版本信息和版权声明包的声明必须是非注释的第一行,用一个空格分隔package关键字与包的名字,如:packagecom.neusoft.softdev.firewall;引用声明从第一列开始用一个空格分配import关键字和引用类型名。应保证引入类都被使用,减少引入*的使用。※importjava.sql.SQLException;//GOODImportjava.sql.*; //BAD类或接口声明每个源程序必须有一个class或interface声明命名规范包的命名类和接口的命名变量命名常量命名方法命名标签命名命名规范包的命名全部由小写字母组成。如:packagetelmecall.business.console;packagetelmecall.business.exception;packagetelmecall.presentation.util;命名规范类和接口的命名一般由大写字母开头其它字母小写的单词组成专有的缩写词除外,如:AWTExceptionclass名字建议用名词或名词短语interface名字取决于其主要功能和用途是使Object具有特定的功能,建议使用可以描述此功能的形容词(加上-able或者-ible后缀)如:
Searchable,Sortable,NetworkAccessible等否则,建议使用名词或者名词短语命名规范变量命名采用大小写混合的形式以小写字母开头,名字中其他单词(或只取首字母的缩写单词)以大写字母开头,其它都为小写字母不使用下划线分隔应为名词或名词短语例:booleanresizable;charrecordDelimiter命名规范常量命名建议都为大写字母用下划线分隔单词如:MIN_VALUE,MAX_BUFFER_SIZE,PTION_FIEL_NAME命名规范方法命名采用大小写混合的形式以小写字母开头,其他单词(或只取首字母的缩写单词)以大写字母开头,所有其它字母小写。不使用下划线分隔单词方法命名应能描绘出方法的作用和功能建议使用祈使动词或动词短语获取或设置类属性的方法建议显示的命名为getProperty()或setProperty(),其中property是类的属性的名字用于判断类的布尔属性的方法建议显示的命名为isProperty(),property是指类的属性的名字※命名规范标签命名主要针对break和continue等语句的。※应为小写字母使用下划线分隔单词不要在同一个方法中多次使用同一个标签名空白的使用空行空格缩进行的延续(折行)空白的使用空行 有益于将代码按照逻辑分段,以提高代码的可读性。※ 下列情况用一个空行:在版权声明、包声明块、引用声明块之后在类的声明之间在方法的声明之间在类中声明最后一个属性之后,声明第一个方法之前空白的使用空格下列情况建议使用单个空格:在一个关键字和它所修饰的块之间。如:catch,for,if,switch,synchronized,while。注意super,this后不要跟空格任何关键字和它所用的参数之间。如:returntrue;一个列表中逗号之后。如:
foo(long_exp1,long_exp2,long_exp3);//GOOD foo(long_exp1,long_exp2,long_exp3);//BAD下列情况不建议使用空格:左括号和后一个字符之间右括号和前一个字符之间if(i==42)//GOODif(i==42)//BAD空白的使用缩进要求是四个空格 TAB在不同的源代码管理工具中因为用户设置的不同宽度不相同,因此不要使用TAB建议修改各管理工具的设置将TAB字符扩展为4个空格行的延续(折行)行应为120列,超出此限制应截成比较短的行在逗号之后折行或一个操作符之前折行△※尽可能采用高层次的折行※折行后对齐上一行语句同一层的起始位置※如果上面规则不适用,则缩进4个字符注释应能够帮助读者理解代码的功能和作用、程序的流程注释要言简意赅须注意注释的正确性,错误的注释还不如不做注释临时的注释用“temporarynote”进行标注,以利于将来程序发布时将其删去,如: //temporarynote:Changethistocallsort()whenthebugs...源码中加入适当的注释,可自动生成与源码同步的文档注释版权信息注释类注释成员注释方法注释内部类的注释其它的注释注释版权信息注释 必须在java文件的开头,建议如下格式:※/**$Header$*$Revision$*$Date$**Copyright(c)2005东软软件股份有限公司软件开发事业部*/注释类注释通常放在类定义的前面(类实体以外)通常详细介绍该类的功能、作者、版本,“@deprecated”标志的使用,以及产生该类的时间和引用其他类等信息/***<p>Description:[描述该类概要功能介绍]</p>*@author<ahref="mailto:xxx@">作者中文名</a>*@version$Revision$2006-1-11*/注释成员注释建议所有类成员都作注释以提高可读性与可维护性只有public和protected类型的类成员注释可被javadoc提取到文档中/***<p>Discription:[字段功能描述]</p>*/注释方法注释 内容包括:※方法功能介绍参数说明返回类型说明例外类型JDK/SDK的引入版本等/***<p>Discription:[方法功能中文描述]</p>*@paramarg1*@paramarg2*@author:[创建者中文名字]*@update:[日期YYYY-MM-DD][更改人姓名][变更描述]*/类内部类的注释 可参考”类注释“其它的注释代码修改的注释※修改单行,在上一行使用单行注释,写明修改原因,人员姓名和日期用单行注释符号注释原行代码,在下一行添加更新的代码冗余代码的注释注释冗余代码行,并在前一行注明原因,注释人员姓名和日期类体外的注释主要包括package和import语句。引入新类包同时不需要指定引入人及日期等log信息,多余类包可直接删除类类的组织顺序建议如下:类的定义类的成员变量(字段/属性)类成员变量(字段/属性)的存取方法构造函数类方法(静态方法)实例方法main方法类类的定义 包含在不同的行的extends和implements,如:publicclassCounterSetextendsObservableimplementsCloneable类的成员变量(字段/属性) 接下来是类的成员变量/***Packetcounters*/protectedint[]packets;类类成员变量(字段/属性)的存取方法 接下来是类变量的存取方法:/***Getthecounters*@returnanarraycontainingthestatisticaldata.*/publicint[]getPackets(){ returnpackets;}publicvoidsetPackets(int[]packets){
this.packets=packets;}类构造方法 它应该用递增的方式写(如:参数多的写在后面):publicCounterSet(size){
this.size=size;}类方法(静态方法) 有static关键字实例方法 无static关键字。必要时,须加上final修饰符,表示本方法不可被覆盖。类main方法 如果定义了main(String[]args)方法,那应写在类底部。接口定义形式类似于类的定义形式。声明采用如下格式:[public]interfaceInterfaceName[extendsSuperInterfaces]{ //InterfaceBody}SuperInterface是可用逗号分隔的接口列表,按字母顺序排列接口体的声明建议按如下顺序:接口的字段声明接口的方法声明接口字段声明与方法声明同类的字段声明与方法声明形式一样。语句简单语句复合语句语句简单语句※赋值的表达式每行只含一条语句本地变量声明应在不同的行中对声明后不再变动应当声明为final,使编译器作优化数组声明数组的[]应紧跟类型名在“[”之前不能有空格return语句return后的表达式,应用括号包起来简单返回值,不用括号语句复合语句※括号的格式 所有的复合语句建议采用如下花括号形式:{}中的语句应该单独作为一行在{}中的复合语句应该有层次 如下的情况可以不使用花括号语句块中包含null语句,或都只有简单的一行注:有此IDE工具的默认设置“{”是在行尾,请修改IDE工具设置,使“{”换行显示语句复合语句※if语句for语句while语句do-while语句switch语句try语句synchronized语句标签语句通常用花括号封装标签本身应在单独一行,后面跟一冒号“:”性能优化常识前提运算时间java.lang.String※java.util.Vector线程循环性能优化常识前提首先让程序运行起来,再考虑变得更快除非特别必要,并证实某部分代码存在性能问题时,才应进行优化使用专门的工具分析瓶颈,否则可能是浪费时间性能提升的隐含代价是自己的代码变得难于理解与维护性能优化常识运算示例标准时间本地赋值i=01.0实例赋值this.i=n;1.2int
增值i++;1.5byte增值b++;2.0short增值s++;2.0float增值f++;2.0double增值d++;2.0空循环while(true)n++;2.0三元表达式(x<0)?–x:x;2.2算术调用Math.abs(x)2.5数组赋值a[0]=n;2.7long增值l++;3.5方法调用funct();5.9throw或者catch违例try{throwe;}320同步方法调用synchMethod();570新建对象newObject();980新建数组newint[10];3100运算时间标准时间=语句执行时间/本地赋值时间性能优化常识java.lang.String避免直接使用运算符“+”使用StringBuffer对象,用append()方法追加构造StringBuffer对象时,应粗略估计出它最终长度,作为构造函数的参数(默认构造函数预设了16个字符的容量),否则并没有提高效率其它字符串操作尽可能使用String已经提供的方法短字符串的连接可以使用concat子串查找使用indexOf,substring等性能优化常识java.util.Vector避免把新元素添加到Vector的最前面避免从中间删除元素删除所有元素的最好方法是removeAllElements()避免二次搜索循环体内部的代码不会以任何方式修改Vector类型对象大小时,应提前取得Vector.size()性能优化常识线程防止过度的同步不必要的同步会造成程序性能的下降。如果是单线程,则一定不要使用同步避免同步整个代码段代码段的同步牵涉的范围比对某个方法或函数进行同步广。对每个对象使用多“锁”的机制来增大并发一般每个对象都只有一个“锁”,这表明如果两个线程执行一个对象的不同的同步方法时,会发生“死锁”。即使这两个方法并不共享任何资源。为避免这个问题,可以对一个对象实行“多锁”的机制性能优化常识循环边界若特环体内操作不影响边界,应在循环体外计算并求得边界值。循环体内避免构建新对象恰当使用break中止循环遍历数组、向量或树结构时,如果查到满足条件的元素时,应及时使用break退出循环其它exit()除在在main中可以调用外,其它地方不应调用。异常声明的错误应抛出一个RuntimeException或者派生的异常顶层的main()方法应截获所有的异常,并进行处理将连续的小的“try-catch”块合并到一起保留必要的异常处理,可以保证代码健壮程度类名的唯一性CLASSPATH指到的任何地方,每个名字仅对应一个类,否则编译器可能使用不恰当的类,引起程序错误若怀疑自己碰到类路径问题,请试在类路径的每一个起点,搜索一个同名的.class文件※代码检查代码检查的目的和意义检查编码规范性:提高代码的可读性和可维护性。一个团队中,代码容易在程序员之间共享。易于代码的回顾。维护部门交付产品的规范形象。检查编码质量:提高代码质量。提升代码成果的交付能力。内容准备工作代码检查Checklist简介代码检查Checklist的使用代码检查工具简介代码检查工具的使用代码检查时机代码检查流程练习编辑Java文件之前,已经在编辑器Eclipse里引入部门制定的编码风格文件codeformatter.xml和codetemplates.xml。从部门获取代码复查checklist文件。从部门获取同行评审记录文件。从部门获取Checkstyle工具包。从部门获取Findbugs工具包和Findbugs缺陷等级对照表。代码检查前的准备工作代码检查Checklist简介JavaScriptJSPJAVAC++代码检查Checklist的使用PSM裁剪组织的“代码复查Checklist”,形成适合项目的“代码复查Checklist”,并对开发人员进行讲解。编码时,预防产生Checklist中的问题。人工代码复查,核对Checklist中的问题项,检查出的问题记录到“同行评审记录”中。使用工具进行Java代码复查,核对Checklist中的问题项及其修改等级,检查出的问题记录到“同行评审记录”中。Checkstyle工具
CheckStyle,能够自动化检查Java代码规范,从而使得开发人员从这项重要但是枯燥的任务中解脱出来。它能够检查:检查Javadoc注释。检查每行的最大字符数,不得超过120。忽略指定格式的行,如*号或者/号开始的。检查方法的最大行数,不得超过200。检查文件的最大行数,不得超过2000。检查方法名称。检查是否有空块。检查if、else是否使用{}。是否使用了tab键。
Checkstyle工具简介Checkstyle工具的使用Checkstyle工具的使用:修改checkstyle工具包中build.xml文件:将<filesetdir=“../工程路径/../src”includes=“**/*.java”/>;的dir部分改写成工程实际路径。安装ant。Eclipse自带ant,可以直接使用。在操作系统环境变量中配置ANT_HOME(如:D:\ant)和Path(如D:\ant\bin)。在checkstyle工具包所在路径下执行“antcheck”命令。检查结果生成到result目录下。Findbus工具:
Findbugs
是一个静态分析工具,它检查类或者JAR文件,将字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年秋季中学名班主任工作室工作经验分享课件-用心沟通架起家校连心桥
- 2026年智能门锁应急开启设计研究
- 2026年小学低年级德育工作汇报课件:新学期德育工作计划
- 2026天津卫生系统招聘考试(中西医结合内科)历年参考题库含答案详解
- 2026吉林省公务员考试(行政职业能力测验)历年参考题库含答案详解
- 青岛版小学科学三年级下册《灯泡亮了》
- 2026医疗招聘中医类-中医内科学历年题库含答案详解
- 2026医学检验期末复习-临床寄生虫学与检验(本医学检验)历年题库含答案详解
- 2026初级卫生职称-初级技师-病案信息技术(师)代码:213历年参考题库含答案详解
- 2026公路工程造价人员资格考试(公路工程技术与计量)历年参考题库含答案详解
- 2026年小学粤教粤科版五年级科学新上册全册教案
- 2026年工厂车间安全培训试题附答案(完整版)
- 2026年人教版初中八年级英语上册教学计划及教学进度表
- 社区居民健康档案的建立与管理
- 2026秋小学湘美版美术四年级上册(新教材)教学计划附进度表
- 2025年浙江省员额法官遴选面试考题及答案
- 26秋六上语文1-8单元知识点总结(新版)
- 2026年轧钢厂精整安全事故案例分析
- 电子科技大学学生手册
- 2026届国家电网南瑞集团毕业生春季招聘正式开启笔试参考题库附带答案
- 基于QFD创新型品管圈的区域药学服务新模式构建(药剂科)(药房)(门诊)(药房门诊)
评论
0/150
提交评论