项目编码规范

上传人:油条 文档编号:112931987 上传时间:2019-11-07 格式:DOC 页数:19 大小:76KB
返回 下载 相关 举报
项目编码规范_第1页
第1页 / 共19页
项目编码规范_第2页
第2页 / 共19页
项目编码规范_第3页
第3页 / 共19页
项目编码规范_第4页
第4页 / 共19页
项目编码规范_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《项目编码规范》由会员分享,可在线阅读,更多相关《项目编码规范(19页珍藏版)》请在金锄头文库上搜索。

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

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

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

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

5、规则,只有要调用的方法才使用这些规则。2.3. 设计类和方法时,要达到下列目的:1)创建更加容易调试和维护的方法2)创建具有强大内聚力的类3)创建高度专用的方法4)创建松散连接的方法5)尽量使方法具有独立性6)提高方法的扇入性7)降低方法的扇出性2.4. 编程原则2.4.1. 为方法和类赋予表义性强的名字 为了使代码更加容易理解,最容易的方法之一是为你的方法赋予表义性强的名字。函数名DoIt、GetIt的可读性很难与CalculateSalesTax、 RetrieveUserID相比。由缩写方法名组成的代码很难理解和维护,没有理由再这样做了。给方法正确的命名,可使程序工程的调试和维护工作大大

6、的改观。请认真对待方法命名的工作,不要为了减少键入操作量而降低方法的可理解度。实际应用举例:1)给方法命名时应大小写字母混合使用。如果句子全使用大写字母,那么阅读起来就非常困难,而大小写字母混合使用的句子,阅读起来就很容易。 2)定义方法名时不要使用缩写。如果你认为应用程序中的某些工程应使用缩写,那么请将这些情况加上注释,并确保每个人在所有时间内都使用这些缩写。决不要在某些方法中对某些单词进行缩写,而在别的方法中却不使用缩写。 3)定义方法名要统一使用英文单词或者计算机专业英语,要做到见名知意。2.4.2. 创建方法时,始终都应显式地定义它的作用域。 1) 如果你真的想创建一个公用方法,请向代

7、码阅读者说明这一点。2) 通过为每个方法赋予一个明确定义的作用域,可以减少代码阅读者需要投入的工作量。应确保你为方法赋予最有意义的作用域。如果一个方法只被同一类中的另一个方法调用,那么请将它创建成私有方法。如果该方法是从多个类中的多个方法中调用,请将该说明为公用方法。2.4.3. 用参数在方法之间传递数据应尽量避免使用类变量。一般来说,变量的作用域越小越好。为了减少类变量,方法之一是将数据作为参数在不同方法之间传递,而不是让方法共享类变量。1)为每个参数指定数据类型。 2)始终要对数进行检验,决不要假设你得数据没有问题。程序员常犯的一个错误是在编写方法时假设数据没有问题。在初始编程阶段,当编写

8、调用方法时,这样的假设并无大碍。这时你完全能够知道什么是参数的许可值,并按要求提供这些值。但如果你不对参数的数据进行检验,那么下列情况就会给你带来很大麻烦:另外某个人创建了一个调用方法,但此人不知道允许的值;你在晚些时候添加了新的调用方法,并错误的传递了坏数据。2.4.4. 其他编程建议1. 注意释放资源,如文件关闭,数据库操作后关闭ResultSet, Statement, Connection等,其他涉及IO操作的如:各种Reader,Writer,InputStream,OutputStream等等。2. 使用 StringBuffer 对象 在处理 String 的时候要尽量使用 St

9、ringBuffer 类,StringBuffer 类是构成 String 类的基础。String 类将 StringBuffer 类封装了起来,(以花费更多时间为代价)为开发人员提供了一个安全的接口。当我们在构造字符串的时候,我们应该用 StringBuffer 来实现大部分的工作,当工作完成后将 StringBuffer 对象再转换为需要的 String 对象。比如:如果有一个字符串必须不断地在其后添加许多字符来完成构造,那么我们应该使用 StringBuffer 对象和它的 append() 方法。如果我们用 String 对象代替 StringBuffer 对象的话,会花费许多不必要的

10、创建和释放对象的 CPU 时间。3. 避免太多的使用 synchronized 关键字 避免不必要的使用关键字 synchronized,应该在必要的时候再使用它,这是一个避免死锁的好方法。 必须使用时,也尽量控制范围,最好在块级控制。4. 避免使用 java.util.Vector 等那些在jdk1.3前就有的集合类因为Unlike the new collection implementations, Vector is synchronized.,所以使用java.util.Vector类在性能上会有所减低。5. 尽量使用接口而不是一个具体的类比方如下需求,给定一个SQL语句,返回一个对

11、象的列表,实现中用java.util.ArrayList实现,于是定义方法为:public java.util.ArrayList getObjectItems(String sql)上面的方法存在一个问题,当getObjectItems内改用Vector或LinkedList实现,外部类必须做相应更改。一个更好的方法是定义返回值为java.util.AbstractList更合适:public java.util.AbstractList getObjectItems(String sql)这样即使更改实现,外部类也不必做相应更改。6. 避免使用索引来调用数据库中间层组件返回的结果集如:fo

12、r(int i=1; i=dt.getRowCount(); i+) String field1 = dt.getField(i, 0).toString(); 而应用字段名来存取结果集:for(int i=1; i=dt.getRowCount(); i+) String field1 = dt.getField(i, field1).toString(); 这样在数据库设计更改或查询的SQL语句发生变化时,不会影响到程序的执行。3. 命名约定所有变量的定义应该遵循匈牙利命名法,由表意性强的一个单词或多个单词组成的名字,而且每个单词的首写字母大写,其它字母小写,这样保证了对变量名能够进行正确

13、的断句。3.1. 工程的命名3.1.1. 工程的命名直接使用projectname.3.1.2. 工程目录的分配(参照各类开发工具的设置)1. 设计文档(design):design2. 源代码(source):src.3. 引用的库文件(library):lib4. 生成的代码(class):classes5. 生成的文档(document):docs3.2. 包3.2.1. 约定l 根级目录以com.*开头!l 各项目名称为下一级包!本级目录为项目的控制类所在(即:实现主要流程的类和涉及项目系统管理的类)。l 再下级的主要并列目录名:1) Cloudframework 云存储开发框架包2)

14、 Cngi 具体的应用系统名l 全部小写l 使用英语单词,不要使用汉语拼音l 标识符用点号分隔开来3.2.2. 举例3.3. 类,接口3.3.1. 约定l 类的名字应该使用名词l 使用英语单词,不要使用汉语拼音l 每个单词首字母应该大写l 避免使用单词的缩写,除非它的缩写已经广为人知,如HTTPl 实现类一般采用接口类名+Impl来展现3.3.2. 举例Class Hello;Class HelloWorld ;Interface Apple;Class AppleImpl implements Apple;3.4. 方法3.4.1. 约定l 第一个单词一般是动词。l 使用英语单词,不要使用汉

15、语拼音l 第一个单词是小写,但是中间单词的首字母是大写。l 如果方法返回一个成员变量的值,方法名一般为get+成员变量名,如若返回的值是bool变量,一般以is作为前缀。l 如果方法修改一个成员变量的值,方法名一般为:set+成员变量名。3.4.2. 举例getName();setName();isFirst();3.5. 变量3.5.1. 约定l 单词的首字母大写;但是首个单词字母都必须小写l 使用英语单词,不要使用汉语拼音l 不要用_或&作为第一个字母。l 尽量使用短而且具有意义的单词。l 单字符的变量名一般只用于生命期非常短暂的变量。i,j,k,m,n一般用于int/integers;c,d,e一般用于characters。l 如果变量是集合,则变量名应用复数。l boolean/ Boolean类型的使用is前缀l 命名组件采用匈牙利命名法。3.5.2. 举例String fileName;int students;int i;int n;boolean isPass;3.6. 常量

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号