版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序编码规范VI. 0编写:XXX审核:XXXX X X X年X X月修改目录一、引言3二、命名规范32.1 包(Package)的命名 32.2 Class的命名42.3 Class变量的命名42.4接口的命名52.5参数的命需52.6数组的命需52.6方法的参数6三注释规范63块注释(Block Connnents)73.2 单行注释(Single-Line Comments)73.3 尾端注释(Trailing Comments)73.4 行末注释(End-Of-Line Comments)8 四Java文件样式84版权信息84.2 Package/Imports94.3 Class94
2、.4 Class Fields 104.5存取方法104.6构造函数104.7 main 方法 114.8 换行(Wrapping Lines) 114.9 行长度(Line Length) 134.10 语句(Statements) 13五排版格式18六JSP编码规范19七、文件与目录20八、日志规范20九、设计及技巧建议219表现层229.2业务层229.3持久层22一、引言编码规范对于程序员而言尤为重要,有以下几个原因:1、一个软件的生命周期中,80%的花费在于维护。2、几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护。3、编码规范可以改善软件的可读性,可以让程序员尽快
3、而彻底地理解新的代码。4、如果你将源码作为产品发布,就需要确任它是否被很好的打包并且淸晰无误, 一如已构建的英它任何产品为了执行规范,每个软件开发人员必须一致遵守编码规范中的代码规范,代码规范 提高软件代码的可读性,使得开发人员快速和彻底的理解新代码.。好的代码风格不仅会提 高可读性,而且会使代码更健壮,更为重要的是在修改时不容易岀错。现代软件开发中, 维护工作会占用80%的时间,而且开发者和维护者通常不是同一个程序员。这意味着程序 员经常要阅读和修改别人开发的程序,别人也同样可能需要阅读和修改你开发的程序,所 以制泄一套完善的编码规范非常重要。左义本规范的目的是使工程中所有的文档及程序编码在
4、写作风格上具有一致性,增 加可读性,减少工程组中因为换人带来的损失,从而使程序具有良好的可读性。二、命名规范2.1包(Package)的命名包(Packages):个唯一包名的前缀应全部为小写的ASCII字母,并且是一个顶级域 名,通常为com、cdu、gov、mil、net、org等。包爼的后续部分可根据各个不同机构内部 的命名规范来定义,这类命名规范可以由特定的目录名来区分部门(department).工程 (project)x 机器(machine)和注册名(login names) 1) / Do a double-flip. else return false。/ Explain w
5、hy here./if (bar 1) / Do a triple-flip/else / return false 四Java文件样式所有的Java(*java)文件都必须遵守如下的样式规则4.1版权信息版权信息必须在java文件的开头,比如:/*版权所有?林林年-林林年XXXXX科技有限公司,*保留所有权利。*/其他不需要岀现在javadoc的信息也可以包含在这里。4.2 Package/lmportspackage行要在import 之前,import中标准的包名要在本地的包名之前.而且按照 字母顺序排列。如果import行中包含了同一个包中的不同子目录,则应该用*来处理。package
6、 com. aoch ecity.oimport java io.import java ut iI. Observable。 import hot Iava .util. Application。这里 java.io.* 使用来代替 Inputstream and Outputstream 的4.3 Class类的注释一般是用来解释类功能的,需要按照如下格式编写:/* 类名:Jpc* vp描述:Jpc服务的用戸接口类,调用了 JpcScrvicc类的实现。* * vp版权声明:Copyright (c) 2003-2004,* a href=http:/www.公司网址”X XXX 科技有限
7、公司 * author a href=*作者邮箱今作者姓名* (Aversion 1.5.6*/4.4Class Fields类的成员变量必须通过注释说明其含义.不管成员变量是public protected还是private的都要说明。4.5存取方法若类的存取方法只是用于对类的变量赋值、取值的话,在类的成员变量有注释的情 况下,类变量的存取方法可以没有注释。*功能说明:.* param opcData要设置的Opc数据* return true 成功 false 失败* throws SenriceUnavailableException 服务不可用异常*/public static boo
8、lean setDataToOpc(OpcData opcData) throws ServiceUnavailableException return true,pub Iic int getPackets(String s) return copyAr ray (packets offset)。 pub Iic int getBytes () return copyArray (bytes, offset)o pub Iic int getPackets() return packets。 pub I ic void set Packe ts(int packe ts) t his .pa
9、cke ts = packe ts 4.6构造函数构造函数,要用递增的方式书写(参数多的写在后而),这样可以使方法和参数更 易读。4.7main 方法如果已经左义了 main(String)方法,那么它就应该写在类的底部。4.8 换行(Wrapping Lines)当一个表达式无法容纳在一行内时,可以依据如下一般规则断开: 在一个逗号后而断开 在一个操作符前而断开 宁可选择较髙级别(higher-level)的断开,而非较低级别(lower-level)W断开 新的一行应该与上一行同一级别表达式的开头处对齐-如果以上规则导致你的代 码混乱或者使代码都堆挤在右边,那就代之以缩进8个空格。以下是断
10、开方法调用的一些例子:someMethod(longExpression 1, longExpression2. longExpression3, longExpression4, longExpression5)ovar = someMethod l(longExpression 1,someMethod2(longExpression2,longExpression3)o以下是两个断开算术表达式的例子。前者更好,因为断开处位于括号表达式的外 边,这是个较高级別的断开。longName 1 = longName2 * (longName3 + longName4 - longNamc5)+
11、4 * longname6c /PREFFERlongName 1 = longName2 (longName3 + longName4 longName5) + 4 * longname6o /AVOID以下是两个缩进方法声明的例子。前者是常规情形。后者若使用常规的缩进方式将 会使第二行和第三行移得很靠右,所以代之以缩进8个空格/CONVENTIONAL INDENTATIONsomeMethod(int anArg. Object anotherArg. String yetAnotherArg,Object andStillAnother) /INDENT 8 SPACES TO AVO
12、ID VERY DEEP INDENTSprivate static synchronized horkingLongMethodName(int anArg,Object anotherArg, String yetAnotherArg,Object andStillAnother) if语句的换行通常使用8个空格的规则,因为常规缩进(4个空格)会使语句体看起来比较费劲。比如:(DONT USE THIS INDENTATIONif (condition 1 & condition2)II (condition3 & condition4)Il!(condition5 & condition
13、6) /BAD WRAPS doSomethingAboutIt()o /MAKE THIS LINE EASY TO MISS /USE THIS INDENTATION INSTEADif (condition 1 & condition2)II (condition3 & condition4)Il!(condition5 & condition6) doSomethingAboutIt()。/OR USE THISif (condition 1 & condition2) II (conditions & condition4)Il!(condition5 & condition6)
14、doSomethingAboutltO。这里有三种可行的方法用于处理三元运算表达式:alpha = (aLongBooleanExpression) ? beta : gamma。alpha = (aLongBooleanExpression) ? beta:gamma calpha = (aLongBooleanExpression)? beta:gamma c4.9 行长度(Line Length)尽疑避免一行的长度超过80个字符,因为很多终端和工具不能很好处理之。注意:用于文档中的例子应该使用更短的行长,长度一般不超过70个字符。4.10 语句(Statements)简单语句(Simpl
15、e Statemen每行至多包含一条语句,例如:argv+o / Correctargc-o / Correctargv+ o argc- /AVOID!复合语句(Compound Statements)复合语句是包含在大括号中的语句序列,形如语句,例如下而各段:-被括其中的语句应该较之复合语句缩进一个层次-左大括号”应位于复合语句起始行的行尾;右大括号”应另起一行并与复合 语句首行对齐。-大括号可以被用于所有语句,包括单个语句,只要这些语句是诸如if-clsc或for 控制结构的一部分。这样便于添加语句而无需担心由于忘了加括号而引入bug。返回语句(return Statemen ts)一个
16、带返回值的return语句不使用小括号()”,除非它们以某种方式使返回值更为显 见。例如:return oreturn myDisk.size()0return (size ? size : defaultSize)o if, if-else, if else-if else 语句(if, if-else, if else-if else Statenients)if-clse语句应该具有如下格式:if (condition) statements oif (condition) statements a else statements aif (condition) statements a
17、 else if (condition) statements a elsestatements a注意:if语句总是用十和丁括起来.避免使用如下容易引起错误的格式:if (condition) /AVOID! THIS OMITS THE BRACES !statement o for 语句(for Statements)一个for语句应该具有如下格式:for (initialization condition o update) statements o一个空的for语句(所有工作都在初始化,条件判断,更新子句中完成)应该具有如下 格式:for (initialization a cond
18、ition c update) 当在for语句的初始化或更新子句中使用逗号时,避免因使用三个以上变量,而导致 复杂度提高。若需要,可以在for循环之前(为初始化子句)或for循环末尾(为更新子句)使 用单独的语句。 while 语句(while Statements)个while语句应该具有如下格式while (condition) statements a一个空的while语句应该具有如下格式:while (condition)o do-while 语句(do-while Statemen ts)一个do-while语句应该具有如下格式:do statements o while (cond
19、ition)oswitch 语句(switch Statements)一个switch语句应该具有如下格式:switch (condition) case ABC:statements o/* falls through */case DEF:statements obreakocase XYZ:statements obreakadefault:statements a break.每当一个case顺着往下执行时(因为没有break语句),通常应在break语句的位置添加注 释。上而的示例代码中就包含注释/* falls through */。 try-catch 语句(try-catch
20、Statements)一个try-catch语句应该具有如下格式:try statements o catch (ExccptionClass e) statements o一个uy-catch语句后而也可能跟着一个finally语句,不论try代码块是否顺利执行 完,它都会被执行。try (statements o catch (ExceptionClass e) statements o finally statements a五排版格式1. 关键词和操作符之间加适当的空格。2. 相对独立的程序块与块之间加空行。3. 较长的语句、表达式等要分成多行书写。4. 划分出的新行要进行适应的缩进,
21、使排版整齐,语句可读。5. 长表达式要在低优先级操作符处划分新行,操作符放在新行之首。6. 循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。7. 若函数或过程中的参数较长,则要进行适当的划分。&不允许把多个短语句写在一行中,即一行只写一条语句。9. 函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风 格。10. 用大括号和界圧一段程序块的,编写程序块时和应各独占 一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的泄义、结构 的泄义、枚举的定义以及if、for、do、while、switch, ease语句中的程序都要采用如上的 缩进方式。六JS
22、P编码规范1 整个jsp/j sp bean表示层应当尽可能的瘦和简单化。2牢记大多数的JSP都应当是只读的视图,而由页而bean来提供模型。3应当一起设计JSP和JSP bean4在尽可能合理的情况下,把业务逻辑从JSP中移走。具体于HTTP的逻辑(如,对Cookie的处理)属于bean或支持类中,而不是JSP中。5 尽量把条件逻借放在控制器中而不是放在视图中。6为JSP、包含的文件、JSP Bean和实现扩展标记的类使用遵循标准的命名惯例。如:jsp 控制器 xxxxController.jsp被包含的:jsp .descriptiveNameOfFragment.jspjsp 会话 be
23、na: xxxxSessionBean标记类:xxxxTag.xxxxTagExtralnfo7应当避免设计既显示表单又处理结果的页面。&在jsp中避免代码重复。把要重复的功能放在一个包含的jsp、bean或标记扩展中, 使得它能够被重用。9. jsp bean应当永远不要去产生HTML10. 在jsp中应该避免使用out.pringln()发放来产生页而内容。11. jsp层不应该直接访问数据,这包括JDBC数据库访问和EJB访问。12. 在长度上,代码片的代码最好不要超过10行。13. 除了 jsp bean之外,jsp不应当去实例化复杂的可读写的对象。如果这样的 话,就有可能在jsp中去
24、执行不适当的业务逻辑。14. jsp bean中不应当包含大量的数拯。15. 如果使用了jsp:forward和jsp:include标记,并且必须使用简单类型的值 来与外部页面进行通讯的话,就应当使用一个或多个jsp:param元素。16. 立制标记应当用在适合把逻辑从jsp中移走的地方。17. 应当谨慎地使用jsp:forward标记,在jsp中它是一个等价的goto。1&应当使用隐藏的注释来阻止输岀的HTML过大。19. 在jsp中避免进行异常处理。20. 每个jsp文件中都应当使用一个错误页而来处理不能够从中恢复的异常。21. 只有在能够获得性能上的好处时,才使用jsplnit()方法
25、和jspDestroyO方 法。获取和放弃资源是jsp beans和标记处理器的事,而不是由jsp来负责的。22.如果没有充分的理由,就不要在jsp中定义方法和内部类。七、文件与目录1.所有编译好的java类要打包成jar格式,统一放在应用目录的WEB-INF/lib目录 下,而不能把class文件直接放在WEB-INF/classes目录下。2系统中需要采用的第三方的类库也应放在WEB-INF/lib目录下,统一打包。3所有图片应该放在应用目录的images目录下,工程和产品的图片件放在images下 的一级子目录中,如CMS的图片文件可以放在images/CMSo4.Struts的配置文件
26、必须放在WEB-INF/config目录下,每个产品应该有一个或多个 struts的配置文件。5.产品自左义的struts配置文件的命名应该以“struts-config” +产品的夕i称+某块划称 + .xml”,struts-config-CMS-pub.xml6.Spirng的配程文件必须放在WEB-INF/目录下。7.产品自定义的sping配置文件的命勿应该以“applicationCon忙xt” +产品的名称+某 块名称 + .xml” , applicationContext-CMS-pub.xml八、日志规范采用log4j作为日志模块的标准框架,版本采用128, log4j的配宜
27、文件为WEB- INF/classes/ perties,配置方式采用log4j的标准配置文件方式,如:# For JBoss: Avoid to setup log4j outside $JBOSS_HOME/server/default/dcploy/log4j.xml# For all other servers: Comment out the Log4J listener in web.xml too#log4j.rootCategory=INFO.IogfilexonsoleIog4j.rootCategorr=INFO,console#log4j.rootCat
28、egory=ERRORlog4j.appendc r.logfile=org.apache.log4j.RollingFileAppenderlog4j.appendc r.logfile.File=c:/ezframework.loglog4j.appender.logfile.MaxFileSize=512KB# Keep three backup fileslog4j.appcndc 匚 logfilcNtaBackuph】dcx=3log4j.appendc r.logfile.layout=org.apache.log4j.PattemLayout# Pattern to output: date priority
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南省某废钢基地项目可行性研究报告
- 2024租赁期满后购买选择权协议
- 2025年度特色餐厅餐饮配送服务承包合同4篇
- 中国防水胶卷材项目投资可行性研究报告
- 2025年度个人创业贷款担保合同样本4篇
- 2025年涂装劳务分包合同范本大全:涂装工程安全3篇
- 2025年度个人房产抵押融资合同规范文本2篇
- 2025年度个人汽车贷款合同标准格式4篇
- 2025年度个人汽车租赁保险附加服务合同3篇
- 2025年江苏海州发展集团有限公司招聘笔试参考题库含答案解析
- CNAS实验室评审不符合项整改报告
- 农民工考勤表(模板)
- 承台混凝土施工技术交底
- 卧床患者更换床单-轴线翻身
- 计量基础知识培训教材201309
- 中考英语 短文填词、选词填空练习
- 一汽集团及各合资公司组织架构
- 阿特拉斯基本拧紧技术ppt课件
- 初一至初三数学全部知识点
- 新课程理念下的班主任工作艺术
- (完整版)企业破产流程图(四张)
评论
0/150
提交评论