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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

JAVA代码规范.docx

1、JAVA代码规范技术部代码规范JAVA代码规范V1.0目录制订人列表 2文档版本历史 2目录 31. 总览 71.1. 前言 71.2. 适用人员 71.3. 范围 71.4. 定义和术语 71.5. 相关引用文档 82. 规范内容 82.1. 运行环境 82.2. 源文件结构规则 82.2.1. 类/接口 92.2.2. 类变量的声明 92.3. 排版规则(必须使用) 102.3.1. 方法名(必须使用) 102.3.2. 缩进(必须使用) 102.3.3. 在方法的局部变量声明和语句之间加一个空行(建议使用) 102.3.4. 简单语句(建议使用) 102.3.5. 大括号(必须使用) 1

2、12.3.6. 语句排版规则(必须使用) 112.3.7. IF语句(建议使用) 112.3.8. For循环(必须使用) 112.3.9. Switch (必须使用) 122.3.10. Try、Catch和Finally(建议使用) 122.3.11. 表达式排版规则 132.3.11.1. 空格(必须使用) 132.3.11.2. 一元操作符(必须使用) 132.3.11.3. 强制转型(建议使用) 132.3.11.4. 单行(必须使用) 142.4. 注释规则 142.4.1. 原则(必须使用) 142.4.2. JavaDoc 152.4.2.1. 创建文件(必须使用) 152.4

3、.2.2. 修改文件(必须使用) 152.4.2.3. 类方法(必须使用) 162.4.2.4. 单行(必须使用) 162.4.2.5. 块注释规则(必须使用) 172.4.2.6. 尾端注释规则(建议使用) 172.4.3. 文档化的部分 172.4.3.1. 参数(必须使用) 172.4.3.2. 变量(必须使用) 172.4.3.3. 类(必须使用) 182.4.3.4. 接口(必须使用) 182.4.3.5. 局部变量(建议使用) 182.4.3.6. 方法内部注释(建议使用) 192.4.3.7. 方法(必须使用) 192.5. 命名规则 202.5.1. 包命名规则(必须使用) 2

4、02.5.2. 类命名规则(必须使用) 202.5.3. 接口命名规则(必须使用) 202.5.4. 方法命名规则(必须使用) 202.5.5. 变量命名规则(必须使用) 212.5.6. 常量命名规则(必须使用) 212.5.7. 方法的参数命名规则(必须使用) 212.5.8. 数组命名规则(必须使用) 222.5.9. Getter 方法命名规则(必须使用) 222.5.10. Boolean getter 方法命名规则(必须使用) 222.5.11. Setter 方法命名规则(必须使用) 222.5.12. 异常命名规则(必须使用) 232.6. 变量规范 232.6.1. 变量使用

5、(必须使用) 232.7. 方法规范(必须使用) 232.8. 数字精度 242.9. 可读性 242.9.1. 使用集合时必须使用泛型; 242.9.2. 一个类代码行不能超过1000行;一个方法代码行不能超过200行;每行代码长度不超过130个字符; 242.9.3. 优先级(必须使用) 242.9.4. 数字(必须使用) 242.9.5. 代码间隔(必须使用) 252.9.6. 代码难度(必须使用) 252.9.7. 循环(建议使用) 252.10. 程序的效率 252.10.1. 避免在循环条件中重复取值 252.10.2. 字符串类型的变量拼接,超过3次的拼接,必须使用StringB

6、uffer,StringBuilder; 262.10.3. 为List,Set,Map,StringBuffer等定义初始大小; 262.10.4. 使用System.arraycopy ()代替通过循环复制数组; 262.10.5. 禁止在循环内查询数据库;JOB等存在大集合数据查询需求的除外; 262.10.6. 循环(必须使用) 262.10.7. 字符串(必须使用) 262.10.8. 对象(必须使用) 272.11. 质量保证规则 272.11.1. 关闭与释放(必须使用) 272.11.2. 合理的使用(必须使用) 282.11.3. 比较操作(必须使用) 282.11.4. 异

7、常 282.11.4.1. 不要“用纸包火” (不可使用) 282.11.4.2. 传递业务异常时尽量使用原始对象(建议使用) 292.11.5. 日志 292.11.5.1. 日志类库 (建议使用) 292.11.5.2. 日志输出 (必须使用) 292.11.5.3. 日志信息(必须使用) 302.11.5.4. 异常日志输出 (必须使用) 302.11.6. 信息安全(必须使用) 302.11.7. 容错(必须使用) 311. 总览1.1. 前言代码之于程序员,就像零件之于机械工,庄稼之于农民,它是软件的基石,一行行代码都是程序员的心血经过日日夜夜凝结成的。做为一个程序员, 应该像母亲呵

8、护孩子一样呵护自己的代码,它不仅仅是一行一行的文字,它是一个程序员的尊严和价值所在;它是活的,你甚至能感受到它的心跳。编码规范只是大家达成一致的约定,这样大家的代码就可以互相看懂,维护起来更加容易,思想更畅快的交流,经验更快的得到传播。代码规范不是束缚程序员的桎梏,应该知道,不遵守规范的个性的代码并不代表程序员的性格, 并不能张扬个性。个性应该体现在用更简单、更优雅、更易读、更易理解以及算法实现效率更高等方面。1.2. 为什么要统一规范?阅读方便、爽,因为遇到和自己不同的书写和规范时会感觉很不爽。formatter不同会带来代码结构和格式的变化,导致对比比对时到处都是不同。1.3. 适用人员对

9、JAVA代码进行代码开发和代码Review的相关人员。1.4. 范围编码规范定义了所有代码编写者在编写Java代码时应遵守的一些规则和习惯。本规范采用以下术语描述: 规则:编程时强制必须遵守的原则。 建议:编程时必须加以考虑的原则。 示例:对此规则或建议给出例子。1.5. 定义和术语Pascal case 所有单词首字母大写,其他字幕小写。例:Person, OrderCamel case 除了第一个单词,所有单词第一个字母大写,其他首字母小写。OrderNum,dataTime在后面的描述中我们使用 Pascal 代表第一种表示方式, Camel 代表第二种表示方式。不可使用- 规范中涉及的

10、不可使用的内容,坚决不能使用建议使用- 规范中涉及的建议使用的内容,结合实际业务需求,开发习惯,最大程度的符合规范。必须使用- 规范中涉及的必须使用的内容,所有研发人员严格按照规范进行开发1.6. 相关引用文档http:/www.soberit.hut.fi/mmantyla/BadCodeSmellsTaxonomy.htm设计模式-可复用面向对象软件的基础 机械工业出版社Java与模式 闫宏著Java编码规范 人民邮电出版社重构-改善既有代码的设计 Martin Fowler 2003 2. 规范内容2.1. 运行环境 JDK 1.8.0 开发工具Eclipse, maven, git(s

11、vn), tomcat 82.2. 源文件结构规则 (必须使用)所有包,类,接口,方法,属性,变量,参数均使用英文单词进行命名. (必须使用)命名包,类,接口,方法以及变量时,尽量使用贴近问题域的且意义丰富的名称。 (建议使用)修改源代码时,应尽量保持与所修改系统的编码风格保持一致 (必须使用)必须有package,再写import package com.wubanf.projname.modulename.submodulename (建议使用)不使用import xxx.*,使用精确导入在xxx.* 里面的内容是代码中大部分会用到则可以使用* (必须使用)顺序:标准库、第三方库、本地库空

12、行分隔 (必须使用)先写包语句,再写引入语句。 (建议使用)package行和import行之间留一行空行。 (必须使用)引入的标准包名要在本地包名之前,并且包名按照字母顺序排列。 (建议使用)import的标准包和本地包之间留一行空行。示例:package com. wubanf.trade;import java.sql.DatabaseMetaData;import java.sql.ResultSet;import com.sitech.crmpd.core.config.Config;import com.sitech.crmpd.core.jdbc.ConnectionFactor

13、yimport com.wubanf.trade.x2.2.1. 类/接口 (必须使用)先写类/接口注释,标明类/接口的用途、版本、作者等信息。 (建议使用)类/接口注释之后空一行,然后写类/接口声明。 (建议使用)extends 和 implements写在不同行。 (建议使用)异常也单写一行。示例:public class CounterSet extends Observable implements Cloneable2.2.2. 类变量的声明a. (建议使用)类变量的声明顺序是:先静态变量,再成员变量,变量定义顺序(public,protected,package,private)b

14、. (必须使用)一行定义一个变量,不要给多个变量赋值c. (建议使用)实例变量尽量非public需要定义setter/getterd. (必须使用)局部变量使用时才声明(减小作用域),声明的同时初始化e. (必须使用)类变量的注解(Autowire)需要写在上一行/* * Copyright: Copyright (c) 2014 * Company: wubanf */package com.wubanf.api.auth.model;/* * * author 杨浩 * since 0.1.0 */public class Test /* public静态变量 */ public stat

15、ic String pubStatic; protected static String protStatic; static String pkgStatic; private static String priStatic; /* public变量 */ public String pub; protected String prot; String pkg; private String pri; static /特别说明,为啥用静态块初始化的注释 pubStatic = ; /特别说明,为啥用块初始化的注释 pub = ; /* * 代码规范:一个公共方法的示例,此方法做什么用的描述

16、* param input XX业务或模块,做啥用的 */ public static void pubStaticMethod(String input) static void pkgStaticMethod() protected static void protStaticMethod() private static void priStaticMethod() public Test() public void pubMethod() void pkgMethod() protected void protMethod() private void priMethod() 2.3.

17、 排版规则(必须使用)(必须使用)所有代码提交至SVN,GIT前,都必须先进行Format;2.3.1. 方法名(必须使用)方法名和其后的括弧之间不应有空格示例:int getResult(int forInt, char forChar)2.3.2. 缩进(必须使用)采用4个空格,注意:一定要使用空格键。这样可以避免使用不同的编辑器阅读程序时,因TAB键所设置的空格数目不同而造成程序布局不整齐。2.3.3. 在方法的局部变量声明和语句之间加一个空行(建议使用)void method1() / 声明 int anInt = 0; String aString = null; Object an

18、Obj = null; / 语句 if (condition) 2.3.4. 简单语句(建议使用)简单语句每行至多包含一条语句示例:argv+; / 正确argc-; / 正确argv+; argc-; / 不允许这样使用!2.3.5. 大括号(必须使用)大括号对齐,左大括号“”应位于复合语句起始行的行尾;右大括号“”应另起一行并与复合语句首行对齐。 示例:for (initialization; condition; update) statements; 2.3.6. 语句排版规则(必须使用)规则4.2.4 必须用“”和“”将if内的语句括起来。(即使只有一条语句的情况下) 正确:if(c

19、ondition) System.out.println(“正确”); 错误: if(condition) System.out.println(“正确”);2.3.7. IF语句(建议使用)在多层嵌套的if语句中,需以尾端注释的方式表示出层次关系2.3.8. For循环(必须使用)for语句中的表达式要用空格分开 示例:for (expr1; expr2; expr3) 在多层嵌套的for语句中,应以尾端注释的方式表示出层次关系2.3.9. Switch (必须使用)每当一个case顺着往下执行时(因为没有break语句),通常应在break语句的位置添加注释。下面的示例代码中就包含注释/*

20、 falls through */示例:一个switch语句应该具有如下格式:switch (condition) case ABC: statements; /* falls through */ case DEF: statements; break; case XYZ: statements; break; default: statements; break;2.3.10. Try、Catch和Finally(建议使用)关键词try catch finally和后面的括号之间加一个空格示例: try statements; catch (ExceptionClass e) statem

21、ents;try statements; catch (ExceptionClass e) statements; finally statements;2.3.11. 表达式排版规则2.3.11.1. 空格(必须使用)2. 左括号和后一个字符之间不应该出现空格, 同样, 右括号和前一个字符之间也不应该出现空格 3. 用空格分隔所有的二元运算符(除了.)和操作数 示例:a = (a + b) / (c * d);2.3.11.2. 一元操作符(必须使用)4. 一元操作符和操作数之间不加空格,一元操作符包括负号(-)、自增(+)、自减(-)。示例:i+;J-;5. 当三元运算符“ ? : ”的“

22、?”之前出现包含二元运算符的表达式时,给表达式添加一对圆括号 示例:(x = 0) ? x : -x;2.3.11.3. 强制转型(建议使用)强制转型后要跟一个空格示例:myMethod(byte) aNum, (Object) x);myMethod(int) (cp + 5), (int) (i + 3) + 1);2.3.11.4. 单行(必须使用)单行不应超过130个字符,断行的原则是:6. 在逗号后。7. 在操作符前。8. 在较高的层次断行。9. 所断的行之间要对齐。10. 第一次断行比上一行缩进4个字符。 示例: someMethod(longExpression1, longEx

23、pression2, longExpression3, longExpression4, longExpression5); var = someMethod1(longExpression1, someMethod2(longExpression2, longExpression3);longName1 = longName2 * (longName3 + longName4 - longName5) + 4 * longname6; / 更好一些longName1 = longName2 * (longName3 + longName4 - longName5) + 4 * longnam

24、e6; / 避免这样使用alpha = (aLongBooleanExpression) ? beta : gamma; alpha = (aLongBooleanExpression) ? beta : gamma; alpha = (aLongBooleanExpression) ? beta : gamma; 2.4. 注释规则2.4.1. 原则(必须使用)11. 对代码进行注释,是在代码可读性的基础上,使用自然语言对代码所表 达的意思进行阐述。并不是说代码可以写的很烂,注释写的很详细,这不是 好的方式。如果代码可读性很好,命名表意丰富,清晰,一般不需要特别多 的注释。对于类,主要着重要

25、描述它的职责,即它能干什么,对于复杂的算 法实现,应该使用内部实现注释,说明算法的主要思路,对于长方法,要让 阅读代码的人比较容易的明白方法实现的主要流程。反之,对于一看就懂的方法,则不需要进行注释,比如 get/set 方法。12. 代码应该和注释保持同步,如果代码和注释不同步,则阅读代码的人会 想,“到底是代码准确,还是注释准确啊”,换谁都会糊涂。13. 方法必须有注释,且必须简洁易懂。太简单的方法就不要注释了,比如上面提到的get/set 方法。14. 每次增量的修改都必须写明注释:谁、在什么时间、因为什么原因添加; 15. 一个类注释行数需要到达代码行数的30%;2.4.2. Java

26、Doc2.4.2.1. 创建文件(必须使用)使用JavaDoc对功能、版本信息、日期、作者和版权声明示例:/* * Copyright: Copyright (c) 2014 * Company: wubanf */2.4.2.2. 类方法(必须使用)用中文写出每个参数和返回值的含义示例:/* param CustID: 客户ID* return 返回用户的单位信息* throws Exception*/2.4.2.3. 单行(必须使用)单行注释位于所描述内容之前单行注释之前留一行空行 单行注释和所描述代码具有一样的缩进格式注释不能在一行写完时,就采用块注释示例:/这里是单行注释2.4.2.4

27、. 块注释规则(必须使用)16. 方法内部的块注释位于所描述内容之前17. 块注释前留一行空行 18. 块注释和所描述代码具有一样的缩进格式。 示例:/* 这里是块注释*/2.4.2.5. 尾端注释规则(建议使用)19. 对变量或常量的简短注释在代码右端 20. 代码和尾端注释之间留有足够多的空白21. 多个短注释出现于大段代码中时,注释要有相同的缩进示例:String name = null; /这里是尾端注释2.4.3. 文档化的部分2.4.3.1. 参数(必须使用)22. 参数类型23. 用于做什么24. 一些相关约束、限制或者是前置条件(preconditions)25. 复杂的情况下

28、,还需包含一个示例以助说明。2.4.3.2. 变量(必须使用)26. 描述说明27. 复杂的情况下,需要给出一个使用例子示例:/* The unique identifier of current record.* This variable is also the primary key for the Enterprise Bean.*/public String logID;2.4.3.3. 接口(必须使用)a. 接口说明(包括:作者、时间、类功能、目的等)b. 该接口应如何使用 2.4.3.4. 方法内部注释(建议使用)c. 方法内部变量说明d. 复杂的逻辑部分的代码注释2.4.3.5

29、. 方法(必须使用)e. 该方法做什么以及为什么这样做f. 该方法的传入参数说明g. 该方法的返回说明h. 已知的bugsi. 该方法所抛出的异常说明j. 重载方法必须使用Override(避免父类方法调整时导致重载失效,明确方法的层次关系)k. 无错误无警告(不需要关心的warning用SuppressWarnings标注一下)l. 该方法中代码更新的历史记录m. 该方法如何调用n. 前置条件(pre-condition)/后置条件(post-condition)说明 示例:/* * Given a Primary Key, finds an EJBeans with the Primary Key * (.si-tech.ejb.demo.LogPK). * Returns

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

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