Java代码编写规范(参考)
阿里JAVA开发规范,助你写出更干净整洁的代码

阿⾥JAVA开发规范,助你写出更⼲净整洁的代码⼀、命名风格1.【强制】类名使⽤UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:DO / BO / DTO / VO / AO2.正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal /TaPromotion3.反例:macroPolo / UserDo / XMLService / TCPUDPDeal /TAPromotion4.【强制】⽅法名、参数名、成员变量、局部变量都统⼀使⽤lowerCamelCase 风格,必须遵从驼峰形式。
5.正例:localValue / getHttpMessage() / inputUserId6.【强制】常量命名全部⼤写,单词间⽤下划线隔开,⼒求语义表达完整清楚,不要嫌名字长。
7.正例:MAX_STOCK_COUNT 反例:MAX_COUNT8.【强制】抽象类命名使⽤Abstract 或Base 开头;异常类命名使⽤Exception 结尾;测试类命名以它要测试的类的名称开始,以Test 结尾。
9.【强制】Model 类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误。
10.反例:定义为基本数据类型Boolean isDeleted;的属性,它的⽅法也是isDeleted(),RPC框架在反向解析的时候,“以为”对应的属性名称是deleted,导致属性获取不到,进⽽抛出异常。
11.【强制】对于Service 和DAO 类,基于SOA 的理念,暴露出来的服务⼀定是接⼝,内部的实现类⽤Impl 的后缀与接⼝区别。
正例:CacheManagerImpl 实现CacheManager 接⼝。
12.【推荐】为了达到代码⾃解释的⽬标,任何⾃定义编程元素在命名时,使⽤尽量完整的单词组合来表达其意。
正例:从远程仓库拉取代码的类命名为PullCodeFromRemoteRepository 反例:变量int a;的随意命名⽅式。
Java编程规范总结

Java编程规范总结命名:1. 为包、类、⽅法、变量取⼀个好名字,使代码易于理解2. 禁⽌使⽤魔⿁数字3. 常量命名,由全⼤写单词组成,单词间⽤下划线分隔,且使⽤ static final修饰4. 变量、属性命名,使⽤名词,并采⽤⾸字母⼩写的驼峰命名法5. ⽅法的命名,⽤动词和动宾结构,并采⽤⾸字母⼩写的驼峰命名法6. 类和接⼝的命名,采⽤⾸字母⼤写的驼峰命名法7. 包的命名,由⼀个或若⼲个单词组成,所有的字母均为⼩写8. 数组声明的时候使⽤ int[] index,⽽不要使⽤ int index[]注释:1. 尽量⽤代码来解释⾃⼰2. 注释应解释代码的意图,⽽不是描述代码怎么做的3. 保证注释与代码⼀致,避免产⽣误导4. 注释应与其描述代码位置相邻,放在所注释代码上⽅或右⽅,并与代码采⽤同样缩进5. 不要⽤注释保留废弃代码6. 不要⽤注释记录修改⽇志7. ⼀般单⾏注释⽤//,块注释⽤,JavaDoc注释⽤排版:1. 团队应遵守⼀致的排版风格2. 将排版风格固化到IDE的代码格式化配置⽂件中,并让整个团队使⽤3. 在不同的概念之间,增加空⾏4. 将逻辑紧密相关的代码放在⼀起5. 控制⼀⾏的宽度,不要超过120个字符6. 在不同的概念间(关键字、变量、操作符等)增加空格,以便清楚区分概念7. 采⽤缩进来区分不同层次的概念8. 将局部变量的作⽤域最⼩化9. 给if、for、do、while、switch等语句的执⾏体加⼤括号{}10. 控制⽂件的长度,最好不要超过500⾏变量和类型:1. 谨慎使⽤静态成员变量2. 避免随意进⾏类型强制转换,应改善设计,或在转换前⽤instanceof进⾏判断33. 需要精确计算时不要使⽤float和double4. 不能⽤浮点数作为循环变量5. 浮点型数据判断相等不能直接使⽤==6. 避免同⼀个局部变量在前后表达不同的含义7. 不要在单个的表达式中对相同的变量赋值超过⼀次8. 基本类型优于包装类型,注意合理使⽤包装类型⽅法:1. ⽅法设计的第⼀原则是要短⼩2. ⽅法设计应遵循单⼀职责原则(SRP),⼀个⽅法仅完成⼀个功能3. ⽅法设计应遵循单⼀抽象层次原则(SLAP)4. ⽅法设计应遵循命令与查询职责分离原则(CQRS)5. 不要把⽅法的⼊参当做⼯作变量/临时变量,除⾮特别需要6. 使⽤类名调⽤静态⽅法,⽽不要使⽤实例或表达式来调⽤7. 应明确规定对接⼝⽅法参数的合法性检查由调⽤者负责还是由接⼝⽅法本⾝负责8. ⽅法的参数个数不宜过多9. 谨慎使⽤可变数量参数的⽅法包、类和接⼝:1. 类和接⼝的设计应遵循⾯向对象SOLID设计原则2. 类的设计应遵循迪⽶特法则3. 类的设计应遵循“Tell,Don't ask”原则4. 类设计时优选组合⽽不是继承5. 除提供给外部使⽤的全局常量外,应尽量避免类成员变量被外部直接访问6. 避免在⽆关的变量或⽆关的概念之间重⽤名字,避免隐藏(hide)、遮蔽(shadow)和遮掩(obscure)7. 覆写(override)——⼦类与⽗类间8. 重载(overload)——类内部9. 隐藏(hide)——⼦类与⽗类间10. 遮蔽(shadow)——类内部11. 遮掩(obscure)——类内部12. 不要在⽗类的构造⽅法中调⽤可能被⼦类覆写的⽅法13. 覆写equals⽅法时,应同时覆写hashCode⽅法14. ⼦类覆写⽗类⽅法时应加上@Override注解15. 接⼝定义中去掉多余的修饰词16. 设计时,考虑类的可变性最⼩化异常:1. 只针对真正异常的情况才使⽤exception机制2. 在抛出异常的细节信息中,应包含能捕获失败的信息3. 对可恢复的情况使⽤受检异常(checked exception),对编程错误使⽤运⾏时异常(runtime exception)4. 不要忽略异常5. ⽅法注释和⽂档中要包含所抛出异常的说明6. ⽅法抛出的异常,应该与本⾝的抽象层次相对应7. 对第三⽅API抛出⼤量各类异常进⾏封装8. 使⽤异常来做错误处理,⽽⾮错误码9. 在finally块中不要使⽤return、break或continue使finally块⾮正常结束10. 不要直接捕获受检异常的基类Exception11. ⼀个⽅法不应抛出太多类型的异常12. 充分利⽤断⾔⽇志:1. ⽇志信息准确、繁简得当,满⾜快速定位的需要2. ⽇志的记录,不要使⽤ System.out 与 System.err 进⾏控制台打印,应该使⽤专⽤的⽇志⼯具(⽐如:slf4j+logback)进⾏处理3. ⽇志⼯具对象logger应声明为private static final4. ⽇志应分等级5. ⽇志中不要记录敏感信息多线程并发:1. 多线程访问同⼀个可变变量,需增加同步机制2. 禁⽌不加控制地创建新线程3. 创建新线程时需指定线程名4. 使⽤Thread对象的setUncaughtExceptionHandler⽅法注册Runtime异常的处理者(v1.5+)5. 不要使⽤Thread.stop⽅法,因为该⽅法本质是不安全的,使⽤它可能会导致数据遭到破坏6. 不要依赖线程调度器、线程优先级和yield()⽅法7. 采⽤Java1.5提供新并发⼯具代替wait和notify(v1.5+)8. 使⽤线程安全集合在多线程间共享可变数据9. 多线程操作同⼀个字符串相加,应采⽤StringBuffer10. 针对线程安全性,需要进⾏⽂档(javadoc)说明运算和表达式:1. 不要写复杂的表达式2. 运算时应避免产⽣溢出3. 采⽤括号明确运算的优先级控制语句:1. 采⽤for-each代替传统的for循环(v1.5+)2. 在switch语句的每⼀个case、和default中都放置⼀条break语句序列化:1. 尽量不要实现Serializable接⼝2. 序列化对象中的HashMap、HashSet或HashTable等集合不能包含对象⾃⾝的引⽤3. 实现Serializable接⼝的可序列化类应该显式声明 serialVersionUID泛型:1. 在集合中使⽤泛型(v1.5+)2. 类的设计可优先考虑泛型(v1.5+)3. ⽅法的设计可优先考虑泛型(v1.5+)4. 优先使⽤泛型集合,⽽不是数组(v1.5+)其他语⾔特性:1. 新代码不要使⽤已标注为@deprecated的⽅法2. 使⽤JDK⾃带的API或⼴泛使⽤的开源库,不要⾃⼰写类似的功能。
项目编码规范(仅供借鉴)

项目代码编程规范1.应用范围本规范应用于采用J2EE规范的项目中,所有项目中的JAVA代码(含JSP,SERVLET,JAVABEAN,EJB)JS代码、HTML代码及数据库设计均应遵守这个规范。
同时,也可作为其它项目的参考。
2.设计类和方法2.1. 创建具有很强内聚力的类方法的重要性往往比类的重要性更容易理解,方法是指执行一个独立逻辑的一段代码。
类常被错误的视为是一个仅仅用于存放方法的容器。
有些开发人员甚至把这种思路作了进一步的发挥,将他们的所有方法放入单个类之中。
之所以不能正确的认识类的功能,原因之一是类的实现实际上并不影响程序的执行。
当一个工程被编译时,如果所有方法都放在单个类中或者放在几十个类中,这没有任何关系。
虽然类的数量对代码的执行并无太大的影响,但是当创建便于调试和维护的代码时,类的数量有时会带来很大的影响。
类应该用来将相关的方法组织在一起。
当类包含一组紧密关联的方法时,该类可以说具有强大的内聚力。
当类包含许多互不相关的方法时,该类便具有较弱的内聚力。
应该努力创建内聚力比较强的类。
大多数工程都包含许多并不十分适合与其他方法组合在一起的方法。
在这种情况下,可以为这些不合群的方法创建一个综合性收容类。
创建类时,应知道“模块化”这个术语的含义是什么。
类的基本目的是创建相当独立的程序单元。
2.2. 创建松散连接和高度专用的方法2.2.1.使所有方法都执行专门的任务每个方法都应执行一项特定的任务,它应出色的完成这项任务。
应避免创建执行许多不同任务的方法。
创建专用方法有许多好处。
首先调试将变得更加容易。
2.2.2.尽量使方法成为自成一体的独立方法当一个方法依赖于其他方法的调用时,称为与其他方法紧密连接的方法。
紧密连接的方法会使调试和修改变得比较困难,因为它牵涉到更多的因素。
松散连接的方法优于紧密连接的方法,但你不可能使每个方法都成为独立的方法。
若要使方法具备较强的独立性,方法之一是尽量减少类变量。
java代码规范(九)前后端规约

java代码规范(九)前后端规约1. 【强制】前后端交互的 API,需要明确协议、域名、路径、请求⽅法、请求内容、状态码、响应体。
说明: 1)协议:⽣产环境必须使⽤ HTTPS。
2)路径:每⼀个 API 需对应⼀个路径,表⽰ API 具体的请求地址:a)代表⼀种资源,只能为名词,推荐使⽤复数,不能为动词,请求⽅法已经表达动作意义。
b) URL 路径不能使⽤⼤写,单词如果需要分隔,统⼀使⽤下划线。
c)路径禁⽌携带表⽰请求内容类型的后缀,⽐如".json",".xml",通过 accept 头表达即可。
3)请求⽅法:对具体操作的定义,常见的请求⽅法如下:a) GET:从服务器取出资源。
b) POST:在服务器新建⼀个资源。
c) PUT:在服务器更新资源。
d) DELETE:从服务器删除资源。
4)请求内容:URL 带的参数必须⽆敏感信息或符合安全要求;body ⾥带参数时必须设置 Content-Type。
5)响应体:响应体 body 可放置多种数据类型,由 Content-Type 头来确定。
2. 【强制】前后端数据列表相关的接⼝返回,如果为空,则返回空数组[]或空集合{}。
说明:此条约定有利于数据层⾯上的协作更加⾼效,减少前端很多琐碎的 null 判断。
3. 【强制】服务端发⽣错误时,返回给前端的响应信息必须包含 HTTP 状态码,errorCode、errorMessage、⽤户提⽰信息四个部分。
说明:四个部分的涉众对象分别是浏览器、前端开发、错误排查⼈员、⽤户。
其中输出给⽤户的提⽰信息 要求:简短清晰、提⽰友好,引导⽤户进⾏下⼀步操作或解释错误原因,提⽰信息可以包括错误原因、上下⽂环境、推荐操作等。
errorCode:参考附表 3。
errorMessage:简要描述后端出错原因,便于错误排查⼈员快速定位问题,注意不要包含敏感数据信息。
正例:常见的 HTTP 状态码如下1) 200 OK: 表明该请求被成功地完成,所请求的资源发送到客户端。
JAVA编程规范(修订)

JAVA编程规范1.1 Java文件名与文件组织结构1.一个java源文件不应该超过2 000行。
2.在Java源文件中应该包含一个单一的公共类(class)或接口(interface),这个公共类或公共接口,应该是这个源文件的第一个类或接口。
3.一个Java源文件一般由下面的顺序构成:(1)文件注释头(2)包名(package)(3)引入(import)声明(4)类(class)或接口(interface)的声明部分1.2 Java文件注释头Java类文件注释头是用来描述该类功能及其特点,以及相关开发信息的,如该类的关联类(通常情况下不描述Java系统核心类如java.util.Vector, ng.Thread等)、开发公司或单位、版权、作者、代码审定人该类所支持的JDK版本、该类版本、开发日期、最后更改日期、修改人、复审人等信息,下面就是一个Java类文件注释头:/****************************************************************** 该类功能及其特点的描述(例如:该类是用来……)** 该类未被编译测试过。
** @see(与该类相关联的类):(AnatherClass.java)*** 开发公司或单位:××软件有限公司研发中心** 版权:本文件版权归属××公司研发中心*** @author(作者):必胜利** @since(该文件所支持的JDK版本):Jdk1.3 或JDK1.42.在重点同时难以理解的地方另加注释。
方法体内的注释应该与其所描述的代码位于同一个层次上。
在一个块注释之前一般有一空白行用于做区分代码与注释的边界。
1.7 变量的声明初始化与放置1.7.1 变量声明1.在一般情况下我们建议每一行代码,只声明一个变量;2.如果变量名称较短并且又是同一数据类型同一结构类型,并且没有给变量初始化则可以在同一行声明;1.7.2 变量初始化尽量在变量声明的地方初始化,如果变量的初始化与有待于计算或处理后的值有关,则我们可以在取得这个值后对变量做初始化。
java代码格式规范

SOAR项目Java开发规范1. 引言 (2)2.文件 (2)3.命名规则 (3)3.1基本的规则 (3)3.2常量命名 (3)3.3变量命名 (3)3.4方法命名 (5)3.5类和接口的命名 (5)3.6包的命名 (6)4.注释规范 (6)4.1 基本规则 (6)4.2 Java中有三种注释方式说明 (6)4.2.1文档注释/** */ (6)4.2.2行注释// (7)4.2.3块注释:/* */ (7)4.3类/接口注释 (7)4.4 变量注释 (8)4.5 方法注释 (9)4.6 修改记录 (10)5.编码规范 (10)5.1基本原则 (10)5.2类编写规范 (14)5.3变量 (14)5.4方法 (15)5.5 语言使用及书写规范 (16)1. 引言软件开发涉及到各方面人员的交互、协作,为了有效地进行项目开发的沟通,完善代码的维护和交付,有必要在一个小组中采用统一的软件开发标准。
一般来说,制定这样的标准有下列好处:方便软件维护。
据统计,80%的软件开发费用在维护,规范化的代码才方便维护,降低维护成本。
在软件的整个生命期内,期望一个编码人员从开始到该软件报废一致维护其代码是不现实的,必然需要不断地交付、协同好的编码规范能够大大增强代码的可读性,便于开发人员快速的理解新代码。
任何产品都需要好的包装。
我们可以把代码本身看作是一种产品,那么按照规范编程也是对这个“产品”的包装规范化的代码也是软件质量的保证手段之一,也是软件过程能够流畅的基础。
我们每个人必须牢牢树立这样的观念:你今天所编写的代码,会一直使用很多年,并且很有可能被其他人维护和改进。
所以,我们必须努力写出“干净”和易读的代码。
本文档适用于软件开发过程中开发人员,主要包括编码人员、测试人员,开发人员,规范必须严格遵守,否则程序被视为不合格程序。
注:本规范中标红的内容为强制性遵循内容,开发人员必须遵守。
蓝色为强烈建议性内容,最好遵守,这样可以避免程序出现一些莫名奇妙的问题。
java代码方法书写顺序

java代码方法书写顺序Java代码的方法书写顺序在代码的可读性和可维护性方面起着重要的作用。
良好的方法书写顺序可以使代码结构清晰,方便他人理解和修改。
本文将介绍一种常见的Java代码方法书写顺序,以帮助开发者编写更好的Java代码。
在Java代码中,可以按照以下的顺序书写方法:1. 类变量声明:首先声明类的静态变量(即使用static关键字修饰的变量),它们在整个类中都是可见的。
这些变量通常用来保存与该类相关的一般配置或共享数据。
2. 实例变量声明:接下来声明类的实例变量(即没有使用static关键字修饰的变量)。
这些变量通常用来保存每个对象的状态信息。
3. 构造方法:在声明变量后,编写类的构造方法。
构造方法在创建对象时被调用,用于初始化实例变量。
4. 公共方法:在构造方法之后,编写类的公共方法。
公共方法通常是供其他类调用的方法,因此应该放在较前的位置,方便其他程序员使用和查找。
5. 私有方法:在公共方法之后,编写类的私有方法。
私有方法通常是供类内部调用,用于实现一些具体的功能。
6. Getter和Setter方法:在私有方法之后,编写实例变量的Getter和Setter方法。
这些方法用于获取和设置实例变量的值,保证了封装性。
7. 静态方法:最后,编写类的静态方法。
静态方法是用于整个类的操作,不依赖于任何特定的实例。
按照这个顺序编写代码可以使类的结构和功能更加清晰,易于阅读和维护。
此外,还可以根据需要对方法进行分组,在每个分组内按照上述顺序进行排序。
除了方法的书写顺序,还应注意以下几点:1. 使用空行分隔不同类型的方法:为了提高代码的可读性,可以在不同类型的方法(类方法、实例方法、私有方法)之间添加空行。
2. 使用适当的注释:在每个方法之前,使用注释来解释方法的功能、参数、返回值等。
这样可以使其他程序员更容易理解代码的意图和用法。
3. 遵循命名规范:采用有意义的方法名,并遵循Java的命名规范。
JAVA编码(代码)规范(WORD版)

Java编码规范及实践目录Java编码规范及实践 (1)1.2术语 (2)1.3约束 (3)||!(condition5 && condition6)) { (14)4.1一般命名规范 (14)IQuery, IDataAccess,IReportBuilder (15)MAX_TIMES, DEFAULT_NAME (15)4.2特殊命名规范 (17)AbstractReportBuilder,AbstractBeanFactory (18)AccessException, RuntimeException (19)5.2一般原则 (20)1.代码应该和注释保持同步,如果代码和注释不同步,则阅读代码的人会 (20)2.注释尽量简洁,尺度没有准确的定义,大部分人能明白即可,可以将自 (20)Result getResult() throws Exception{ (21)Object getAction(); (22)JavaDoc 工具不要改变格式. (22)Get a default date/time formatter that uses the SHORT (23)Thread.sleep(1000); (24)Derived,如果一个方法可以接受基类对象b 的话:method1(Base b), (25)7.1工厂模式 (26)7.1.1简单工厂 (26)7.1.2工厂方法 (26)7.2单例模式 (27)Client: (27)7.3适配器模式 (28)7.4组合模式 (29)Client: (29)7.5外观模式 (30)Client: (30)7.6代理模式 (31)7.7命令模式 (32)Client: (33)7.8观察者模式 (33)7.9策略模式 (35)Client: (35)IKeyPairGenerable desGenerator = (35)IKeyPairGenerable rsaGenerator = (36)IKeyPairGenerable ideaGenerator = (36)KeyPairManager manager = new KeyPairManager(); (36)7.10模版方法模式 (36)7.11参观者模式 (38)总价格 (40)Client: (40)第1章概述1.1前言代码之于程序员,就像零件之于机械工,庄稼之于农民,它是软件的基石,一行行代码都是程序员的心血经过日日夜夜凝结成的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
命名规范:
1.所有的标识都只能使用ASCII字母(A-Z或a-z)、数字(0-9)和
下划线”_”。
2.一个唯一包名的前缀总是用全部小写的字母。
3.类名是一个名词,采用大小写混合的方式,每个单词的首字母大
写。
4.接口的大小写规则与类名相似。
5.方法名是一个动词或是动词词组,采用大小写混合的方式,第一
个单词的首字母小写,其后单词的首字母大写。
6.变量名的第一个字母小写,任何中间单词的首字母大写,变量名
应简短且可以顾名思义,易于记忆。
避免单个字符的变量名,除非是一次性的临时变量。
7.常量的声明应该全部大写,每个单词之间用”_”连接。
注释规范:
1.注释尽可能使用”//”,对于所有的Javadoc的注释使用/***/,而
临时对代码块进行注释应尽量使用/**/。
2.所有的源文件都应该在开头有一个注释,其中列出文件名、日期
和类的功能概述。
每个方法必须添加文档注释(main除外)。
3.每个属性必须加注释。
4.代码中至少包含15%的注释。
5.注释使用中文。
缩进排版规范:
1.避免一行的长度超过60个字符。
2.使用Eclipse源代码的格式化功能完成代码的缩进排版。
文件名规范:
1.一个Java源文件只能储存一个Java类。
2.文件名与Java类相同。
3.一个类文件不超过200行。
声明规范:
1.一行声明一个变量。
2.不要将不同类型变量的声明放在同一行。
3.只在代块的开始处声明变量。
4.所有的变量必须在声明时初始化。
5.避免声明的局部变量覆盖上一级声明的变量。
6.方法与方法直接以空行分隔。
语句规范:
1.每行至少包含一条简单语句。
2.在return语句中,返回值不使用小括号”()”括起来。
3.If月总是用{和}括起来。
4.在for语句的初始化或者更新子句中,避免因使用3个以上变量,
而导致复杂度提高。
5.当switch的一个case顺着往下执行时(因为没有break),通常
应在break语句的位置添加注释。
其他:
为了防止再写if的判断语句时把i==3,错写成i=3,可以将i==3的写法改为3==i。