项目编码规范_第1页
项目编码规范_第2页
项目编码规范_第3页
项目编码规范_第4页
项目编码规范_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、项目代码编程规范应用范围本规范应用于采用J2EE规范的项目中,所有项目中的JAVA代码(含JSP,SERVLET,JAVABEAN,EJB)JS代码、HTML代码及数据库设计均应遵守这个规范。同时,也可作为其它项目的参考。设计类和方法创建具有很强内聚力的类方法的重要性往往比类的重要性更容易理解,方法是指执行一个独立逻辑的一段代码。类常被错误的视为是一个仅仅用于存放方法的容器。有些开发人员甚至把这种思路作了进一步的发挥,将他们的所有方法放入单个类之中。之所以不能正确的认识类的功能,原因之一是类的实现实际上并不影响程序的执行。当一个工程被编译时,如果所有方法都放在单个类中或者放在几十个类中,这没有

2、任何关系。虽然类的数量对代码的执行并无太大的影响,但是当创建便于调试和维护的代码时,类的数量有时会带来很大的影响。类应该用来将相关的方法组织在一起。当类包含一组紧密关联的方法时,该类可以说具有强大的内聚力。当类包含许多互不相关的方法时,该类便具有较弱的内聚力。应该努力创建内聚力比较强的类。大多数工程都包含许多并不十分适合与其他方法组合在一起的方法。在这种情况下,可以为这些不合群的方法创建一个综合性收容类。创建类时,应知道“模块化”这个术语的含义是什么。类的基本目的是创建相当独立的程序单元。创建松散连接和高度专用的方法使所有方法都执行专门的任务 每个方法都应执行一项特定的任务,它应出色的完成这项

3、任务。应避免创建执行许多不同任务的方法。创建专用方法有许多好处。首先调试将变得更加容易。 尽量使方法成为自成一体的独立方法 当一个方法依赖于其他方法的调用时,称为与其他方法紧密连接的方法。紧密连接的方法会使调试和修改变得比较困难,因为它牵涉到更多的因素。松散连接的方法优于紧密连接的方法,但你不可能使每个方法都成为独立的方法。若要使方法具备较强的独立性,方法之一是尽量减少类变量。创建方法时,设法将每个方法视为一个黑箱,其他例程不应要求了解该方法的内部工作情况,该方法也不应要求了解它外面的工程情况。这就是为什么你的方法应依靠参数而不应依靠全局变量的原因。创建专用方法时,请考虑下列指导原则:1)将复

4、杂进程放入专用方法。如果应用程序使用复杂的数学公式,请考虑将每个公式放入它自己的方法中。这样使用这些公式的其他方法就不包含用于该公式的实际代码。这样也可以更容易发现与公式相关的问题。 2)将数据输入/输出(I/O)放入专用方法。 3)将专用方法中可能要修改的代码隔离。如果你知道某个进程经常变更,请将这个多变的代码放入专用方法,以便以后可以更容易的进行修改,并减少无意中给其他进程带来问题的可能性。 4)将业务规则封装在专用方法中。业务规则常属于要修改的代码类别,应与应用程序的其余部分隔开。其他方法不应知道业务规则,只有要调用的方法才使用这些规则。设计类和方法时,要达到下列目的:1)创建更加容易调

5、试和维护的方法2)创建具有强大内聚力的类3)创建高度专用的方法4)创建松散连接的方法5)尽量使方法具有独立性6)提高方法的扇入性7)降低方法的扇出性编程原则为方法和类赋予表义性强的名字 为了使代码更加容易理解,最容易的方法之一是为你的方法赋予表义性强的名字。函数名DoIt、GetIt的可读性很难与CalculateSalesTax、 RetrieveUserID相比。由缩写方法名组成的代码很难理解和维护,没有理由再这样做了。给方法正确的命名,可使程序工程的调试和维护工作大大的改观。请认真对待方法命名的工作,不要为了减少键入操作量而降低方法的可理解度。实际应用举例:1)给方法命名时应大小写字母混

6、合使用。如果句子全使用大写字母,那么阅读起来就非常困难,而大小写字母混合使用的句子,阅读起来就很容易。 2)定义方法名时不要使用缩写。如果你认为应用程序中的某些工程应使用缩写,那么请将这些情况加上注释,并确保每个人在所有时间内都使用这些缩写。决不要在某些方法中对某些单词进行缩写,而在别的方法中却不使用缩写。 3)定义方法名要统一使用英文单词或者计算机专业英语,要做到见名知意。创建方法时,始终都应显式地定义它的作用域。 1) 如果你真的想创建一个公用方法,请向代码阅读者说明这一点。2) 通过为每个方法赋予一个明确定义的作用域,可以减少代码阅读者需要投入的工作量。应确保你为方法赋予最有意义的作用域

7、。如果一个方法只被同一类中的另一个方法调用,那么请将它创建成私有方法。如果该方法是从多个类中的多个方法中调用,请将该说明为公用方法。用参数在方法之间传递数据应尽量避免使用类变量。一般来说,变量的作用域越小越好。为了减少类变量,方法之一是将数据作为参数在不同方法之间传递,而不是让方法共享类变量。1)为每个参数指定数据类型。 2)始终要对数进行检验,决不要假设你得数据没有问题。程序员常犯的一个错误是在编写方法时假设数据没有问题。在初始编程阶段,当编写调用方法时,这样的假设并无大碍。这时你完全能够知道什么是参数的许可值,并按要求提供这些值。但如果你不对参数的数据进行检验,那么下列情况就会给你带来很大

8、麻烦:另外某个人创建了一个调用方法,但此人不知道允许的值;你在晚些时候添加了新的调用方法,并错误的传递了坏数据。其他编程建议 注意释放资源,如文件关闭,数据库操作后关闭ResultSet, Statement, Connection等,其他涉及IO操作的如:各种Reader,Writer,InputStream,OutputStream等等。 使用 StringBuffer 对象 在处理 String 的时候要尽量使用 StringBuffer 类,StringBuffer 类是构成 String 类的基础。String 类将 StringBuffer 类封装了起来,(以花费更多时间为代价)为

9、开发人员提供了一个安全的接口。当我们在构造字符串的时候,我们应该用 StringBuffer 来实现大部分的工作,当工作完成后将 StringBuffer 对象再转换为需要的 String 对象。比如:如果有一个字符串必须不断地在其后添加许多字符来完成构造,那么我们应该使用 StringBuffer 对象和它的 append() 方法。如果我们用 String 对象代替 StringBuffer 对象的话,会花费许多不必要的创建和释放对象的 CPU 时间。避免太多的使用 synchronized 关键字 避免不必要的使用关键字 synchronized,应该在必要的时候再使用它,这是一个避免死

10、锁的好方法。 必须使用时,也尽量控制范围,最好在块级控制。避免使用 java.util.Vector 等那些在jdk1.3前就有的集合类因为Unlike the new collection implementations, Vector is synchronized.,所以使用java.util.Vector类在性能上会有所减低。尽量使用接口而不是一个具体的类比方如下需求,给定一个SQL语句,返回一个对象的列表,实现中用java.util.ArrayList实现,于是定义方法为:public java.util.ArrayList getObjectItems(String sql)上面的

11、方法存在一个问题,当getObjectItems内改用Vector或LinkedList实现,外部类必须做相应更改。一个更好的方法是定义返回值为java.util.AbstractList更合适:public java.util.AbstractList getObjectItems(String sql)这样即使更改实现,外部类也不必做相应更改。避免使用索引来调用数据库中间层组件返回的结果集如:for(int i=1; i=dt.getRowCount(); i+) String field1 = dt.getField(i, 0).toString(); 而应用字段名来存取结果集:for(

12、int i=1; i10 & isOK=true ) statement; else if (condition) statements; else statements;for语句格式如下:for (initialization; condition; update) statements;如果语句为空:for (initialization; condition; update) ;while语句格式如下:while (condition) statements;如果语句为空: while (condition);do-while语句格式如下:do statements; while (c

13、ondition);switch语句,每个switch里都应包含default子语句,格式如下:switch (condition) case ABC: statements; /* falls through */case DEF: statements; break;case XYZ: statements; break;default: statements; break;try-catch语句格式如下:try statements; catch (ExceptionClass e) statements; finally statements;错误处理和异常事件法则通常的思想是只对错误

14、采用异常处理:逻辑和编程错误,设置错误,被破坏的数据,资源耗尽,等等。通常的法则是系统在正常状态下以及无重载和硬件失效状态下,不应产生任何异常。方法异常处理采用日志机制来报告异常(调用系统LOG4J接口统一管理),包括异常发生的时刻。不要使用异常实现来控制程序流程结构。每一个类或文件都要处理异常或错误。异常封装Dao层的类中统一封装所有异常为DBExceptionService层的类统一获取底层的DBException封装为BusinessExceptionAction层的类统一捕获Service层的异常并处理。其它层的异常可以自定义封装、事务1.非商务公用组件单独封装2.每一个业务流程单独封

15、装3.一次方法(组件)的调用应能完成某一项功能或流程,即符合完整性4.一次方法(组件)的调用符合ACID事务性5.多次方法(组件)的调用应包含在一个事务中可移植性1.尽量不要使用已经被标为不赞成使用的类或方法。2.如果需要换行的话,尽量用 println 来代替在字符串中使用n。 3.用separator()方法代替路径中的“/”或“”。4.用pathSeptarator()方法代替路径中的 “: ” 或 “;” 。最要注意的问题1、缩进缩进以4个空格为单位。预处理语句、全局数据、标题、附加说明、函数说明、标号等均顶格书写。语句块的、配对对齐,并与其前一行对齐,语句块类的语句缩进建议每个、单独

16、占一行,便于匹对。2、空格变量、类、常量数据和函数在其类型,修饰名称之间空格并据情况对齐。3、对齐 原则上关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。另每一行的长度不应超过屏幕太多,必要时适当换行,换行时尽可能在,处或运算符处,换行后最好以运算符打头,并且以下各行均以该语句首行缩进,但该语句仍以首行的缩进为准,即如其下一行为“”应与首行对齐。4、空行 不得存在无规则的空行。程序文件结构各部分之间空两行,各函数实现之间一般空两行,有函数说明或注释,只需空一行或不空。对自己写的函数,加上“/-”做分隔。5、注释注释是软件可读性的具体体现。程序注释量一般占程序编码量的20%,软件工程要求不少于20%。程序注释不能用抽象的语言,类似于处理、循环这样的计算机抽象语言,要精确表达出程序的处理说

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论