ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:25.83KB ,
资源ID:23207709      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23207709.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(fJAVA编码规范.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

fJAVA编码规范.docx

1、fJAVA编码规范密 级:内部公开文档编号:XXXXX_SD_PROC_JAVABMGF版 本 号:V1.0Java编码规范编制: 生效日期:审核: 批准:变更记录变更序号变更原因变更页码变更前版本号变更后版本号更改人批准人生效日期备注1文档建立(注:重要部分采用了蓝色文字标记)目 录1. 原则约定 31.1. 抽象依赖原则 31.2. 接口隔离原则 31.3. 单一职责原则 31.4. 编写伪代码 31.5. 泛型的使用 31.6. Annotation使用 31.7. 异常的处理 41.8. Final关键字 41.9. 工具类的使用 41.10. 控制层开发注意 41.11. 业务逻辑层

2、开发注意 41.12. 数据访问层开发注意 42. 编码细节 52.1. 数组指示符紧跟类型变量 52.2. 避免长的布尔表达式 52.3. 避免条件语句中执行方法 52.4. 三元条件运算符 52.5. 条件语句/循环体主要形式 52.6. switch 语句的使用格式 62.7. 代码的长度 62.8. 代码的缩进 62.9. 空格的使用 72.10. 空行的使用 73. 注释规范 73.1. 基本原则 73.2. 包 83.3. 类、接口注释 83.4. 方法注释 83.4. 常量,变量 83.5. 其他注释 84. 命名规则 94.1. 基本原则 94.2. java命名 94.2.1

3、. 包 94.2.2. 类 94.2.3. 抽象类, 接口 94.2.4. 常量 104.2.5. 变量和参数 104.2.6. 数组的命名 104.2.7. 方法 104.3. 数据库命名 114.3.1. 基本规则: 114.3.2. 表名 114.3.3. 字段: 114.3.4. 主键: 114.3.5. 外键: 114.4. JSP/HTML命名 125. 声明规范 125.1. 基本原则 125.2. 方法 135.3. 字段 13附1:常用缩写简表 13附2:匈牙利命名法 141. 原则约定1.1. 抽象依赖原则抽象依赖原则(稳定依赖原则)。应该依赖于抽象而不依赖与具体类,抽象的

4、类和接口是稳定的,而具体类是易变的,如果依赖于具体类,代码就会非常脆弱,失去了灵活性。1.2. 接口隔离原则一个类对另外一个类的依赖应该建立在最小的接口之上的。1.3. 单一职责原则如果一个类有多于一种的职责,当需求变化时,类的职责就要发生变化,而因此就会引起引用该类的代码发生改变,职责越多,这个类就容易跟更多的类产生耦合关系,而且改变一个职责,可能会影响到另外一个职责的履行。1.4. 编写伪代码编写代码前,先编写注释(可以认为是伪代码),先想后写。 /* 报表构建器,主要职责:* 1.创建拷贝报表模版* 2.填充报表数据* 3.构建报表* 4.画图处理*/1.5. 泛型的使用集合框架工具类使

5、用的时候,尽量使用泛型,限制类型。1.6. Annotation使用1.6.1. 重载方法应该使用Override,可避免父类方法改变时导致重载函数失效1.6.2. 不要让警告出现。不需要关心的warning信息用SuppressWarnings(unused), SuppressWarnings(unchecked), SuppressWarnings(serial) 注释。1.7. 异常的处理1.7.1. 重新抛出的异常必须保留原来的异常信息。1.7.2. 如果异常被捕获,则不应该再出现在抛出异常的声明中。1.7.3. 在所有异常被捕获且没有重新抛出的地方必须写日志1.7.4. 如果属于正

6、常异常的空异常处理块须注释说明,否则不允许空的catch块。1.8. Final关键字1.8.1. 对一些基本数据类型和不太可能通过继承进行扩展的类1.8.2. 作为参数,在方法体内不会发生变化或修改,要考虑声明为final 1.9. 工具类的使用1.9.1. 首先尽量使用apache组织开源项目下的一些通用工具包1.9.2. 其次使用公司基础框架中定义的工具类1.9.3. 再次没有满足需求的工具类时,才自己定义。1.10. 控制层开发注意1.10. 1.10.1. 在页面中尽量不用action名+!+方法名去调用用webwork的action方法1.10.2. webwork的action配

7、置统一,即每一个action方法一个action配置1.10.3. action方法中尽量不要写逻辑代码,应该放到service层实现类方法中1.11. 业务逻辑层开发注意1. 1.9. 1.10. 1.10.1. service层实现类方法参数要校验,建议使用Spring的Assert系列函数。1.10.2. 方法定义的颗粒度要适当。1.10.3. 对于数据库有写操作的必须增加事务支持。1.12. 数据访问层开发注意1.11. 1.12. 1.12.1. DAO层实现类尽量不要写逻辑代码,单纯的数据库操作(逻辑应放到service层实现类方法中)。1.12.2. 使用Spring提供的jdb

8、cTemplate时,应该酌情考虑使用JdbcTemplate还是SimpleJdbcTemplate2. 编码细节2. 2.1. 数组指示符紧跟类型变量int a = new int20; / 避免: int a = new int20;2.2. 避免长的布尔表达式/ 应换成多个更容易理解的表达式bool isFinished = (elementNo maxElement);bool isRepeatedEntry = elementNo = lastElement;if (isFinished | isRepeatedEntry) / 避免if (elementNo maxElement

9、)| elementNo = lastElement) 2.3. 避免条件语句中执行方法InputStream stream = File.open(fileName, w);if (stream != null) / 避免if (File.open(fileName, w) != null) 2.4. 三元条件运算符可以使用如下三种表达方式,条件要用括号括起来。alpha = (aLongBooleanExpression) ? beta : gamma;2.5. 条件语句/循环体主要形式即使单条语句,或者没有语句也要使用括号括起来。例如:if (condition) statements;

10、 else if (condition) else statements; for (initialization; condition; update) 2.6. switch 语句的使用格式switch (condition) case ABC :statements;/ 穿透,一定要做出注释case DEF :statements;break;case XYZ :statements;break;default :statements;break;2.7. 代码的长度 a) 不要使用Eclipse自带的代码Format操作,那会让代码可能性降低。b) 单个函数的有效代码长度当尽量控制在

11、100 行以内(不包括注释行)。c) 单个类的长度包括注释行不超过1500行。 页宽应该设置为100字符(选)。2.8. 代码的缩进应该使用4个空格或者一个TAB键为一个单位进行缩进,例如:public String invoke() throws Exception String profileKey = invoke: ;try UtilTimerStack.push(profileKey);if (executed) test = true;catch 2.9. 空格的使用有空格会让代码可读性提高,更整齐美观。a) 运算符两边应该各有一个空格。b) Java 保留字后面应跟随一个空格。c

12、) 逗号后面应跟随一个空格。d) 冒号两个应各有一个空格。e) 分号后面应跟随一个空格。a = (b + c) * d; / NOT: a=(b+c)*dwhile (true) / NOT: while(true) .doSomething(a, b, c, d); / NOT: doSomething(a,b,c,d);case 100 : / NOT: case 100:for (i = 0; i 10; i+) / NOT: for(i=0;i10;i+) .2.10. 空行的使用a) 文件头部注释、package 语句和import 语句之间。b) class 之间c) 方法之间d)

13、 方法中,变量的申明和具体代码之间。e) 逻辑上相关的语句段之间f) 块注释和行注释的前面逻辑上紧密相关的代码块应该用一个空行分开。3. 注释规范3.1. 基本原则a) 注释的内容,要真正能起到作用,不能为了注释为注释,简单的去拷贝被人注释是不允许的。b) 注释的格式要尽量使用Html格式书写。例如使用 使用转义字符 > 表示 c) 接口方法的注释要能体现出该接口的作用,使用范围,输入输出。d) 实现方法的注释要能体现出,具体的实现,尽量详细,让别人能知道你的实现思路,有助于发现问题。3.2. 包Web程序对于包的命名比较统一,相对都比较容易理解。如果有需要注释的包,应该在package

14、前面加以注释,注释内容应该包含,包的作用、核心类、工具类、与其他模块有怎样的关联。3.3. 类、接口注释 在类、接口定义之前当对其进行注释,包括类、接口的目的、作用、功能、继必要的实现算法、提供的使用方法、作者、示例程序等。 源文件的头部需要一个history段,对于每次对源文件的重大改动,都需要在history段中注明。例如:/* 类文件说明: * * author yuan* date 2007-12-19 上午09:57:01* history * 2007/06/01 Biz 创建文件 * 2007/06/19 kevin 增加提示功能 */3.4. 方法注释 依据标准JavaDoc规

15、范对方法进行注释,以明确该方法功能、作用、各参数含义以及返回值等。复杂的算法用/*/在方法内注解出。 /* * 作用: * * param # * return # * throws #*/3.4. 常量,变量重要的变量要加以注释,以说明其含义等3.5. 其他注释 a) 过长的方法实现,应将其语句按实现的功能分段加以注释概括说明。 b) 分支条件表达式应该加注释,非常简单明了的除外。4. 命名规则4.1. 基本原则 a) 所有包,类,接口,方法,属性,变量,参数均使用英文单词进行命名。b) 命名包,类,接口,方法以及变量时,尽量使用贴近问题域的表意丰富的名称。c) 采用大小写混合,提高名字的可

16、读性。一般应该采用小写字母,但是类和接口的名字的首字母,以及任何中间单词的首字母应该大写。包名全部小写。 d) 尽量少用缩写,但如果一定要使用,当使用公共缩写和习惯缩写等,具体参看附录之常用缩写简表,严禁滥用缩写。 e) 避免使用长名字(最好不超过 25 个字母)。 f) 避免使用数字,但可用2代替to,用4代替for等,如:go2Jsp。 g) 名字可以有两个或三个单词组成,但不应多于三个,变量名称必须大于等于3个字符(循环变量除外)。4.2. java命名4.2.1. 包包名一律小写,不能含有大写字母,不要出现下划线等符号,一般以项目或模块名命名,少用缩写和长名,尽量使用单个单词。 此外,

17、对于包名我们做如下约定:1 工具函数类包名前缀为.util2 Action类包名前缀为.action3 domain类包名前缀为.domain4 service类包名前缀为.service5 dao类包名前缀为.dao6 dao和service的实现包名前缀为.impl7 test case类包名前缀为.test4.2.2. 类类的的名字所有单词第一个字母大写,其他字母小写。eg:UserManager, ClassLoader, HttpHeaderResult类的申明中要一个缺省的构造函数4.2.3. 抽象类, 接口对于抽象类,应该使用Abstract前缀。eg:AbstractRepor

18、tBuilder,AbstractBeanFactory为了基于接口编程,建议采用母为I为前缀的,其实现类使用Impl后缀的命名方式。例如:接口命名为:IBookDAO ,其实现类命名为:BookDAOImpl4.2.4. 常量常量,采用完整的英文大写单词,在词与词之间用下划线连接。4.2.5. 变量和参数1 名字除了第一个单词,所有单词第一个字母大写,其他字母小写。2 对不易清楚识别出该变量类型的变量应使用类型缩写作其前缀,如字符串使用strXXX,boolean使用isXXX,hasXXX等等.3 方法的参数使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字. 4.2.6.

19、数组的命名数组应该总是用下面的方式来命名: byte buffer;而不是: byte buffer;4.2.7. 方法1 方法名应该使用动词开头,一般由动词+名词组成。方法的命名应采用完整的英文描述符,大小写混合使用:所有中间单词的第一个字母大写。方法名称的第一个单词常常采用一个有强烈动作色彩的动词。eg:getName, initialize, addParameter, deleteUser尽量可由函数名得知函数功能,尽量写全,减少缩写缩写字母也应该保持首字母大写exportHtmlSource(); / 避免: exportHTMLSource();openDvdPlayer(); /

20、 避免: openDVDPlayer();2 变量的名字应该和类型名称一致void setTopic(Topic topic) / 避免: void setTopic(Topic value)/ 避免: void setTopic(Topic aTopic)/ 避免: void setTopic(Topic t)void connect(Database database)/ 避免: void connect(Database db)/ 避免: void connect(Database oracleDB)3 当同时定义多个属于同一个类的变量时,把类型作为实例的后缀,如:Point start

21、Point;Point centerPoint;4 使用is 前缀表示一个布尔变量和方法。isUsed, isEmpty,isVisible,isFinished有时也可以使用has,can,should:boolean hasLicense();boolean canEvaluate();boolean shouldAbort = false;5 在查询方法中应使用 find 作为前缀6 在更新方法中应使用 update 作为前缀7 在删除方法中应使用 delete 作为前缀8 在增加方法中应使用 insert 作为前缀9 使用init 做为对象初始化的方法前缀,也可以简写为initinit

22、();initializeFiles();initFontSet();10 对于表示编号的变量,应加No 后缀。tableNo, userNo,employeeNo11 避免使用否定布尔变量boolean isError; / 避免: isNoErrorboolean isFound; / 避免: isNotFound4.3. 数据库命名4.3.1. 基本规则:1. 所有名称以字母及 “_”符号组合而成,其它符号禁止使用。2. 表名称,字段名称必须大写。3. 表名、字段名不允许超过15个单词。4. ORACLE数据库的常用表字段类型:NUMBER、DOUBLE、VARCHAR2()、CLOB、

23、BLOB等,其它字段谨慎使用。5. PD中的设计表、字段必须注释说明6. 数据库采用NUMBER(1)类型表达JAVA中的BOOLEAN类型 ,1为true,0为false,命名采用肯定是命名eg:isValid /not isNotValid7. ORACLE数据库采用NUMBER(14)类型存储的格式为20100408233310表示日期类型4.3.2. 表名表名构成:前缀(系统简称)”_” +模块名称”_”+对象名称(英文单词或英文缩写),例如表:PW_AUTH_USER4.3.3. 字段:采用有意义的单词拼凑需成。单词之前用“_”分隔,应尽量避免字段带表名。例如:表明叫做RH_SYS_

24、USER,有一个名称属性,给字段命名时应该叫NAME,最好不要叫做USER_NAME4.3.4. 主键: 所有表中都需含有代理主键字段,建议统一命名为:ID;4.3.5. 外键: 表名ID例:用户角色表 中有用户ID字段。命名方式为:USER_ID存在主外键关系的,根据使用持久框架来决定:如果使用类似Hibernate ORM持久工具,关系建议交给程序配置文件来建立,使用JDBC则必须建立4.4. JSP/HTML命名1. 文件夹命名应该使用英文单词,不能超过3个单词,除第一个单词首字母外,其他单词均小写并且首字母大写,尽量不包含数字或者下划线。如果单词超过3个则应该采用规范的缩写。2. 页面

25、逻辑(JSP)名称=操作对象名称+操作方法名,使用匈牙利命名法. 表单name属性统一以“form”开头,其后加该表单所需收集的信息的作用或动作例如:formFileUpload 或 formSendMail。其他不做限定。3. javascript脚本 方法 与 变量 命名与java相同如果项目已经提供了公共js脚本,则优先使用公共js脚本中提供的函数。模块通用的脚本函数必须集合于一个js文件中,命名使用模块名eg:ebwebmail.js。在页面上通过形式导入。所有定义方法的元素定义在中或后。javascript脚本内部变量与参数参考附录2。5. 声明规范5.1. 基本原则 声明的基本原则

26、是遵守Java语言规范,并遵从习惯用法。修饰符应该按照如下顺序排列:public, protected, private, abstract, static, final, transient, volatile, synchronized, native, strictfp。类与接口的声明顺序(可用Eclipse的source-sort members功能自动排列): a) 静态成员变量 / Static Fieldsb) 静态初始化块 / Static Initializersc) 成员变量 / Fieldsd) 初始化块 / Initializerse) 构造器 / Constructo

27、rsf) 静态成员方法 / Static Methodsg) 成员方法 / Methodsh) 重载自Object的方法如toString(), hashCode() 和main方法i) 类型(内部类) / Types(Inner Classes) 同等的类型,按public, protected, private的顺序排列。5.2. 方法 所遵循的经验法则是:尽量限制成员函数的可见性。如果成员函数没必要公有 (public),就定义为保护 (protected);没必要保护 (protected),就定义为私有 (private)。 工具类的声明要求做到全是static的5.3. 字段 若没

28、有足够理由,不要把实例或类变量声明为公有。公共和保护的可见性应当尽量避免,所有的字段都建议置为私有,由获取和设置成员函数(Getter、Setter)访问附1:常用缩写简表规则:较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词有大家公认的缩写。如:完整单词缩写AAverageavgBBackbkBackgroundbgBreakbrkBufferbufCColorcr,clrControlctrlDDatadatDeletedelDocumentdocEEditedtErrorerrEscapeescFFlagflgFormfrmGGridgrdIIncrementincInformationinfoInitialinitInsertinsImageimgLLablelabLengthlenListlstLibrarylibMManagermgr,mngrMessagemsgOOracleOraPPanoramapanoPasswordpwdPicturepicPointptPositionposPrintprnProgramprgSServersrvSo

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1