还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
一、说明a编码规范的必要性i.一个软件的生命周期中,80%的花费在于维护ii.几乎没有任何一个软件,在其整个生命同期中,均由最初的开发人员来维护iii.编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新代码iv.如果你将源码作为产品发布,就需要确认它是否被很好的打包并且清晰无误,一如你已构建的其它任何产品
二、文件命名a文件名与类名i.文件名、类名和接口使用类意义完整的英文描述,文件名以首个单词的首字母为小写,剩余单词首字母为大写的混合写法,类名和接口的每个英文单词的首字母使用大写、其余字母使用小写的大小写混合法示例sinosoft.properties selectAjax.js、AuditAction^AuditDaOo b方法名ii.方法名使用类意义完整的英文描述首个单词的字母使用小写、剩余单词首字母大写其余字母小写的大小写混合法示例Jprivate voidcalculateRate;public voidaddNewOrder;iii.方法中,存取属性的方法采用setter和getter方法,动作方法采用动词和动宾结构格式get+非布尔属性名is+布尔属性名0set+属性名动词0动词+宾语0示例public StringgetType;public booleanisFinished;public voidsetVisibleboolean;public voidshow;public voidaddKeyListenerListener;c代码结构命名规则i.包名采用域后缀倒置的加上自定义的包名,采用小写字母,都应该以com或cn开头不包括一些特殊原因在部门内部应该规划好包名的范围,防止产生冲突部门内部产品使用部门的名称加上模块名称产品线的产品使用产品的名称加上模块的名称示例com.sinosoft.platfrom.handup.utils-com.〈公司名称〉.[产品类型名称].〈工程名称》《功能分类名.类名ii.常用组件类的命名以组件名加上组件类型名结尾示例Application类型的,命名以App结尾--------MainAppc Bean类型的,建议命名以Bean结尾------DataAccessBean iii.如果函数名超过15个字母,可采用以去掉元音字母的方法或者以行业内约定俗成的缩写方式缩写函数名示例getCustomerlnformationO改为getCustomerlnfo;d变量名i.属性名使用意义完整的英文描述,第一个单词的字母使用小写,剩余单词首字母大写其余字母小写的大小写混合法属性名不能与方法名相同不例private customerName;private orderNumber;private smpSession;e可配置变量i.常量名使用全大写的英文描述,英文单词之间用下划线分隔开,属性值的字符串以逗号分隔开,并且使用static final修饰刀〈例public static final StringNOT_LOGIN=not.login;conf ig.Properties文件中描述not.login=登陆失败〃;f常量名i.常量名使用全大写的英文描述,英文单词之间用下划线分隔开,并且使用staticfinal修饰常量根据产品工程大小和业务的不同,统一建立公用的常量类ComnionCon slants.java.示例public staticfinal intMAX_VALUE=1000;Public staticfinal StringSTART_DATE=2001-12-08”;
三、书写规范与注释a)源程序注释量由于每个文件的代码注释不一定都可以达到30%,建议以一个系统内部模块作为单位进行检查b)类和接口的注释类和接口的注释放在Class或者interface关键字之前,import关键字之后注释主要是一句话功能简述与功能详细描述类注释使用“/***/”注释方式c)修改代码同时修改相应的注释,以保证注释与代码的•致竹、没有用的注释要删除d)注释的内容要清楚、明了,含义准确,防止注释二义性e)避免在注释中使用缩写,特别是不常用缩写说明在使用缩写时或之前,应对缩写进行必要的说明f)对重载父类的方法必须进行@Override声明g)注释应考虑程序易读及外观排版的因素,使用的语言若是中、英兼有的,建议多使h)用中文,除非能用非常流利准确的英文表达中文注释中需使用中文标点方法和类描述的第一句话尽量使用简洁明了的话概括一下功能,然后加以句号接下来的部分可以详细描述i)Javadoc的使用//表示注释一行,该注释不会被javadoc翻译到文档中,开发人员可以随意使用/*……..*/,注释若干行,该注释不会被javadoc翻译到文档中,开发人员可以随意使川/**…….*/,生成文档的注释,支持HTML文法j)Class的javadoc/★★*类的说明*©author:作者联系邮箱地址*@date建立时间k)属性的javadoc/★★*属性说明*/*)方法的javadoc*★★*方法说明*©author:作者联系邮箱地址*0pa ram[参数][参数说明]*@date建立时间*^return返回值*@throws抛出异常*/m)文件头的设定/★★*File:文件名*^version:版本*Copyright:所属公司*/n)文档中的注称在每个类申明,类成员变量、类方法的申明前必须有文档注释文档注释只说明紧接其后的类、属性或方法例如/**comment forclass*/public classTest{/**comment foran attribute*/int number;/**comment fora method*/public voidmyMethodO{)
四、代码排版a)程序块要采用缩进风格编写,缩进统一•使用TAB缩进b)分界符(如大括号曾和,丁)、第一个紧跟操作语句之后,结束符独占一行,同时与引用它们的语句左对齐在函数体的开始、类和接口的定义、以及if、for、do、while、switch、case语句中的程序或者static、,synchronized等语句块中都要采用如上的缩进方式示例if ab{doStart;}c较长的语句、表达式或参数80字符要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读示例if logger.isDebugEnabled{logger.debug Sessiondestroyed,call-id1+event.getSession.getCallld;d不允许把多个短语句写在一行中,即一行只写一条语句示例Object o=new Object;Object b=null;e if,for,do,while,case,switch,default等语句自占一行,且if,for,do,while,switch等语句的执行语句无论多少都要加括号{},case的执行语句中如果定义变量必须加括号{}示例if ab{doStart;}case x:{int i=9;f相对独立的程序块之间、变量说明之后必须加空行示例if ab{doStart;}//此处是空行return;g尽管不能以在每个方法中程序行数来判断代码质量的好坏,但是在大多数情况下,在一个方法实现中超过100行代码的方法多数不是质量优秀的代码,因此在本公司每个方法的实现不能超过100行超过100行的方法需要分拆成若干个方法h在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符如.,后不应加空格示例if a==bobjectA.doStart;a=count+2;
五、规则a对于switch语句卜的case语句,必须在每个case分支结束前加上break语句说明break才能真正表示该switch执行结束,不然可能会进入该case以后的分支至于语法上合法的场景“一个case后进入下一个case处理”,应该在编码设计上就避免b数据库操作、10操作等需要使用结束close的对象必须在try-catch-finally的finally中close,如果有多个10对象需要close,需要分别对每个对象的close方法进行try-catch,防止一个10对象关闭失败其他10对象都未关闭c系统非正常运行产生的异常捕获后,如果不对该异常进行处理,则应该记录口志说明此规则指通常的系统非正常运行产生的异常,不包括一些基于异常的设计若有特殊原因必须用注释加以说明示例try{//•...•••catch lOExceptionioe{logger.errorioe;}d自己抛出的异常必须要填写详细的描述信息说明便于问题定位示例throw newlOException Writingdata error!Data:+data.toString;e避免使用不易理解的数字,用有意义的标识来替代示例如下的程序可读性差if state==0{state=1;...//program code应改为如卜形式private finalstatic intTRUNK_IDLE=0;private finalstatic intTRUNK_BUSY=1;private finalstatic intTRUNK_UNKNOWN=-1;f数组声明的时候使用int[]index,而不要使用int index[]g不要使用System.out与System.err进行控制台打印,应该使用工具类如日志工具进行统一记录或者打印说明代码发布的时候可以统•关闭控制台打印,代码调试的时候又可以打开控制台打印,方便调试h记录异常不要保存exception.getMessage,而要记录exception.toString,一般可通过日志工具记录完整的异常堆栈信息说明NullPointException抛出时常常描述为空,这样往往看不出是出了什么错示例try•••}catch FileNotFoundExceptione{logger.errore;}i源程序中关系较为紧密的代码应尽可能相邻说明便r程序阅读和查找示例矩形的长与宽关系较密切,放在一起rect.length=10;rect.width=5;
六、性能与可靠性a对Error,Debug,Info级别日志输出前必须对当前的调试等级先进行判断说明日志一般都会有不少字符串的处理,如果不是Debug级别就没有必要进行处理示例if logger.debugEnable{logger.debug request:〃+request.getMethod;。