阿里巴巴java开发手册编程规约之命名风格

     2022-03-20     535

关键词:

1.【强制】代码中的命名均不能下划线或美元符号开始,也不能以下划线或美元符号结束。这两个符号有特殊用途,代理类等~
反例:_name/__name/$Object/name_/name$/Object$
2.【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。
正例:alibaba/taobao/youku/hangzhou 等国际通用的名称,可视同英文。
反例:DaZhePromotion[打折]/getPingfenByName()[评分]/int 某变量 = 3
3.【强制】类名使用UpperCamelCase风格,必须遵从驼峰形式,但以下情形例外:DO/BO/DTO/VO/AO
正例:MarcoPolo/UserDO/XmlService/TcpUdpDeal/TaPromotion
反例:macroPolo/UserDo/XMLService/TCPUDPDeal/TAPromotion
4.【强制】方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase风格,必须遵从驼峰形式。
正例:localValue/getHttpMessage()/inputUserId
5.【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长
正例:MAX_STOCK_COUNT
反例:MAX_COUNT
6.【强制】抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类命名以它要测试的类的名称开始,以Test结尾。
7.【强制】中括号是数组类型的一部分,数组定义如下:String[] args;
反例:使用 String args[]的方式来定义。
8.【强制】POJO 类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误。
反例:定义为基本数据类型Boolean isDeleted;的属性,它的方法也是isDeleted(),RPC框架在反向解析的时候,"以为"对应的属性名称是deleted,导致属性获取不到,进而抛出异常。
9.【强制】包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
正例:应用工具类包名为 com.alibaba.open.util、类名为MessageUtils(此规则参考spring 的框架结构)
10.【强制】杜绝完全不规范的缩写,避免望文不知义。
反例:AbstractClass"缩写"命名成 AbsClass;condition"缩写" 命名成condi,此类随意缩写严重降低了代码的可阅读性。
11.【推荐】如果使用到了设计模式,建议在类名中体现出具体模式。
说明:将设计模式体现在名字中,有利于阅读者快速理解架构设计思想。
正例:public class OrderFactory;
public class LoginProxy;
public class ResourceObserver;
12.【推荐】接口类中的方法和属性不要加任何修饰符号(public也不要加),保持代码的简洁性,并加上有效的Javadoc注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。
正例:接口方法签名:void f();
接口基础常量表示: String COMPANY = "alibaba";
反例:接口方法定义: public abstract void f();
说明:JDK8中接口允许有默认实现,那么这个default方法,是对所有实现类都有价值的默认实现。
13.接口和实现类的命名有两套规则:
1)【强制】对于Service和DAO类,基于SOA的理念,暴露出来的服务一定是接口,内部的实现类用Impl的后缀与接口区别。
正例:CacheServiceImpl实现CacheService接口。
2)【推荐】如果是形容能力的接口名称,取对应的形容词做接口名(通常是–able 的形式)。
正例: AbstractTranslator 实现 Translatable。
14.【参考】枚举类名建议带上Enum后缀,枚举成员名称需要全大写,单词间用下划线隔开
说明:枚举其实就是特殊的常量类,且构造方法被默认强制是私有
正例:枚举名字: DealStatusEnum, 成员名称: SUCCESS / UNKOWN_REASON。
15. 【参考】各层命名规约:
A) Service/DAO 层方法命名规约
1) 获取单个对象的方法用 get 做前缀。
2) 获取多个对象的方法用 list 做前缀。
3) 获取统计值的方法用 count 做前缀。
4) 插入的方法用 save(推荐) 或 insert 做前缀。
5) 删除的方法用 remove(推荐) 或 delete 做前缀。
6) 修改的方法用 update 做前缀。
B) 领域模型命名规约
1) 数据对象: xxxDO, xxx 即为数据表名。
2) 数据传输对象: xxxDTO, xxx 为业务领域相关的名称。
3) 展示对象: xxxVO, xxx 一般为网页名称。
4) POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。

 






















































java开发手册(阿里巴巴)——编程规约(部分)

(一)命名风格3.【强制】类名使用UpperCamelCase风格,但以下情形例外:DO/BO/DTO/VO/AO/PO/UID等。正例:MarcoPolo/UserDO/XmlService/TcpUdpDeal/TaPromotion反例:macroPolo/UserDo/XMLService/TCPUDPDeal/TAPromotion6.【强制】抽象类命名使用Abstract或Base开头 查看详情

阿里巴巴java开发手册

——禁止用于商业用途,违者必究——1/33一、编程规约编程规约((一))命名命名风格风格1.【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反例:_name/__name/$Object/name_/name$/Object$2.【强制... 查看详情

阿里java开发手册之编程规约

...,降低沟通成本。就在2月9号,阿里出了一份Java开发手册(正式版),分为编程规约,异常日志,MySQL规约,工程规约,安全规约五个章节。这里我根据阿里的编程规约,重点记录(黑色加粗部分&#... 查看详情

阿里巴巴java开发手册编程规约之mysql数据库

(一)建表规约1.【强制】表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是unsignedtinyint(1表示是,0表示否)。说明:任何字段如果为非负数,必须是unsigned。正例:表达逻辑删除的字段名is_deleted,1表示删除,0表示... 查看详情

阿里巴巴java开发手册编程规约之注释规约

1.【强制】类、类属性、类方法的注释必须使用Javadoc规范,使用/**内容*/格式,不得使用//xxx方式。说明:在IDE编辑窗口中,Javadoc方式会提示相关注释,生成Javadoc可以正确输出相应注释;在IDE中,工程调用方法时,不进入方法即... 查看详情

阿里巴巴java开发手册编程规约之异常日志

(一)异常处理1.【强制】Java类库中定义的一类RuntimeException可以通过预先检查进行规避,而不应该通过catch来处理,比如:IndexOutOfBoundsException,NullPointerException等等。说明:无法通过预检查的异常除外,如在解析一个外部传来的字... 查看详情

阿里巴巴java开发手册编程规约之oop规约

1.【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。2.【强制】所有的覆写方法,必须加@Override注解。说明:getObject()与get0bject()的问题。一个是字母的O,一... 查看详情

阿里巴巴java开发手册编程规约之并发处理

1.【强制】获取单例对象需要保证线程安全,其中的方法也要保证线程安全。说明:资源驱动类、工具类、单例工厂类都需要注意。2.【强制】创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。正例:publicclassTimerT... 查看详情

阿里巴巴java开发手册编程规约之集合处理

1.【强制】关于hashCode和equals的处理,遵循如下规则:1)只要重写equals,就必须重写hashCode。2)因为Set存储的是不重复的对象,依据hashCode和equals进行判断,所以Set存储的对象必须重写这两个方法。3)如果自定义对象做为Map的键... 查看详情

阿里java开发手冊之编程规约

...代码质量,减少沟通成本。就在2月9号,阿里出了一份Java开发手冊(正式版),分为编程规约。异常日志。MySQL规约,project规约。安全规约五个章节。这里我依据阿里的编程规约,重点记录(黑色加粗部分)自己还未做好的一些规... 查看详情

阿里巴巴java开发手册编程规约之控制语句

1.【强制】在一个switch块内,每个case要么通过break/return等来终止,要么注释说明程序将继续执行到哪一个case为止;在一个switch块内,都必须包含一个default语句并且放在最后,即使它什么代码也没有。2.【强制】在if/else/for/while/do... 查看详情

阿里巴巴java开发手册编程规约之常量定义

1.【强制】不允许任何魔法值(即未经定义的常量)直接出现在代码中。反例:Stringkey="Id#taobao_"+tradeId;cache.put(key,value);2.【强制】long或者Long初始赋值时,必须使用大写的L,不能是小写的l,小写容易跟数字1混淆,造成误解。说... 查看详情

阿里巴巴java开发手册编程规约之工程结构

(一)应用分层1.【推荐】图中默认上层依赖于下层,箭头关系表示可直接依赖,如:开放接口层可以依赖于Web层,也可以直接依赖于Service层,依此类推:开放接口层:可直接封装Service方法暴露成RPC接口;通过Web封装成http接口;... 查看详情

阿里巴巴java开发手册编程规约之代码格式

1.【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:1)左大括号前不换行。2)左大括号后换行。3)右大括号前换行。4)右大括号后还有else等代码则不换行;表示终止... 查看详情

java单体服务开发指南(代码片段)

...1、多仓库2、单体仓库二、编程规约(参考《阿里Java开发手册》)1、命名风格2、常量定义3、代码格式4、OOP规约5、日期时间6、集合处理7、并发处理8、控制语句9、注释规约10、前后端规约11、其它三、异常日志(参... 查看详情

阿里开发手册规范(java)

目录一、编程规约 (一)命名规范(二)常量定义(三)代码格式 (四)OOP规约(五)日期时间(六)集合处理 (七)并发处理(八)控制语句(九)注释规约(十)前后端规约二、异常日志 (一)错误码(二)异常处理(三)日志规约 三、单元测试 四、安... 查看详情

《阿里巴巴java开发手册》更新为《java开发手册》

新版一览:华山版《Java开发手册》《阿里巴巴Java开发手册》始于阿里内部规约,在全球Java开发者共同努力下,已成为业界普遍遵循的开发规范,涵盖编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程规约、设计规... 查看详情

阿里巴巴java开发手册正确学习姿势是怎样的?刷新代码规范认知

很多人都知道,阿里巴巴在2017发布了《阿里巴巴Java开发手册》,前后推出了很多个版本,并在后续推出了与之配套的IDEA插件和书籍。相信很多Java开发都或多或少看过这份手册,这份手册有7个章节,覆盖了编程规约、异常日志... 查看详情