1.命名风格

(1)【强制】 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
反例:_name / __name / $name / name_ / name$ / name__

(2) 【强制】所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
正例: ali / alibaba / taobao / cainiao/ aliyun/ youku / hangzhou 等国际通用的名称,可视同英文。
反例:DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3


关于什么是驼峰命名法

骆驼式命名法(又称驼峰命名法),正如它的名称CamelCase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。

  • 小驼峰式命名法(lower camel case):第一个单字以小写字母开始;第二个单字的首字母大写,例如:firstNamelastName
  • 大驼峰式命名法(upper camel case):每一个单字的首字母都采用大写字母,例如:FirstNameLastNameCamelCase,也被称为Pascal命名法。

(3) 【强制】类名使用 UpperCamelCase 风格,但以下情形例外:DO / BO / DTO / VO / AO /PO / UID 等。
正例:ForceCode / UserDO / HtmlDTO / XmlService / TcpUdpDeal / TaPromotion
反例:forcecode / UserDo / HTMLDto / XMLService / TCPUDPDeal / TAPromotion

(4)【强制】方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格。
正例: localValue / getHttpMessage() / inputUserId

(5)【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
正例: MAX_STOCK_COUNT / CACHE_EXPIRED_TIME
反例: MAX_COUNT / EXPIRED_TIME

(6)【强制】抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。
正例: AbstractPeople/BasePeople/SumException/DemoTest

(7)【强制】类型与中括号紧挨相连来表示数组。
正例: 定义整形数组 int[] arrayDemo;
反例: 在 main 参数中,使用 String args[]来定义 (应使用String[] args)。

(8) 【强制】POJO 类中的任何布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误。
反例: 定义为基本数据类型 Boolean isDeleted 的属性,它的方法也是 isDeleted(),框架在反向解析的时候,“误以为”对应的属性名称是 deleted,导致属性获取不到,进而抛出异常。

(9) 【强制】包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
正例: 应用工具类包名为 com.alibaba.ei.kunlun.aap.util、类名为 MessageUtils(此规则参考 spring 的框架结构)

(10) 【强制】避免在子父类的成员变量之间、或者不同代码块的局部变量之间采用完全相同的命名,使可读性降低。
说明: 子类、父类成员变量名相同,即使是 public 类型的变量也是能够通过编译,而局部变量在同一方法内的不同代码块中同名也是合法的,但是要避免使用。对于非 setter/getter 的参数名称也要避免与成员变量名称相同。
反例:

public class ConfusingName {public int stock;// 非 setter/getter 的参数名称,不允许与本类成员变量同名public void get(String alibaba) {if (condition) {final int money = 666;// ...}for (int i = 0; i < 10; i++) {// 在同一方法体中,不允许与其它代码块中的 money 命名相同final int money = 15978;// ...}}
}
class Son extends ConfusingName {// 不允许与父类的成员变量名称相同public int stock;
}

(11)【强制】杜绝完全不规范的缩写,避免望文不知义。
反例: AbstractClass“缩写”命名成 AbsClass;condition“缩写”命名成 condi,此类随意缩写严重降低了代码的可阅读性。

(12) 【推荐】为了达到代码自解释的目标,任何自定义编程元素在命名时,使用尽量完整的单词组合来表达。
正例: 在 JDK 中,对某个对象引用的 volatile 字段进行原子更新的类名为:AtomicReferenceFieldUpdater。
反例: 常见的方法内变量为 int a;的定义方式。

(13) 【推荐】在常量与变量的命名时,表示类型的名词放在词尾,以提升辨识度。
正例: startTime / workQueue / nameList / TERMINATED_THREAD_COUNT
反例: startedAt / QueueOfWork / listName / COUNT_TERMINATED_THREAD

(14)【推荐】如果模块、接口、类、方法使用了设计模式,在命名时需体现出具体模式。
说明: 将设计模式体现在名字中,有利于阅读者快速理解架构设计理念。
正例: public class OrderFactory; public class LoginProxy; public class ResourceObserver;

(15) 【推荐】接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁性,并加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,确定与接口方法相关,并且是整个应用的基础常量。
正例: 接口方法签名 void commit();接口基础常量 String COMPANY = “alibaba”;
反例: 接口方法定义 public abstract void f();
说明: JDK8 中接口允许有默认实现,那么这个 default 方法,是对所有实现类都有价值的默认实现。

(16) 接口和实现类的命名有两套规则:

  1. 强制】对于 Service 和 DAO 类,基于 SOA 的理念,暴露出来的服务一定是接口,内部的实现类用Impl 的后缀与接口区别。

    正例:CacheServiceImpl 实现 CacheService 接口。

  2. 推荐】如果是形容能力的接口名称,取对应的形容词为接口名(通常是–able 的形容词)。

    正例:AbstractTranslator 实现 Translatable 接口。

(17)【参考】枚举类名带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。
说明: 枚举其实就是特殊的常量类,且构造方法被默认强制是私有。
正例: 枚举名字为 ProcessStatusEnum 的成员名称:SUCCESS / UNKNOWN_REASON。

(18) 【参考】各层命名规约

Service/DAO 层方法命名规约:

  • 获取单个对象的方法用 get 做前缀。
  • 获取多个对象的方法用 list 做前缀,复数结尾,如:listObjects。
  • 获取统计值的方法用 count 做前缀。
  • 插入的方法用 save/insert 做前缀。
  • 删除的方法用 remove/delete 做前缀。
  • 修改的方法用 update 做前缀。

领域模型命名规约:

  • 数据对象:xxxDO,xxx 即为数据表名。
  • 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。
  • 展示对象:xxxVO,xxx 一般为网页名称。
  • POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。

阿里巴巴Java开发文档2020版学习-命名风格相关推荐

  1. python飞机大战概要设计_飞机大战游戏开发文档(Android版)

    飞机大战游戏 开发文档 (Android版) 课程名称:飞机大战游戏 课程类型:Android游戏编程精彩内容,尽在百度攻略:https://gl.baidu.com 姓名:苏均灿 学号:131342 ...

  2. 【校招VIP】线上实习 推推 书籍详情模块 Java开发文档周最佳

    [推推]主要是为校招设计的小说一更新就通知的项目,每个模块都具有亮点和难点,项目表现为手机网站应用,可嵌入小程序或APP中. 恭喜来自 四川师范大学 的 o0hana 同学获得本周线上实习[推推]第一 ...

  3. 【校招VIP】“推电影”第一期电影详情模块Java开发文档作业评审1

    前言:关于[推电影]免费在线实习项目 一.本项目是基于年轻人的喜好,更个性的电影推荐网站.筛选各分类的知名电影,并给出推荐理由和下载链接.另外,通过标签功能匹配个人喜好,实现个性化推送. 二.项目表现 ...

  4. anychat java开发文档_AnyChat视频云平台开发指南

    本帖最后由 佰锐科技-刘冬明 于 2017-9-13 11:59 编辑 简介: AnyChat视频云平台提供线上的音视频通信.多应用接入.即时通讯.全景录像.智能排队,直播.点播等服务.为您定制个性化 ...

  5. java 自动生成文档_[原]java开发文档的自动生成方式

    对于Java注释我们主要了解三种: // 注释一行 /* ...... */ 注释若干行 第三种,文档注释: /** ...... */ 注释若干行,并写入 javadoc 文档 通常这种注释的多行写 ...

  6. 阿里巴巴java开发手册(2020版)

    2020版 链接: https://pan.baidu.com/s/1Zls_FUBKfGksU1GR3BGGGA 密码:titz 2019版 链接:https://pan.baidu.com/s/1 ...

  7. java开发文档怎么写_程序员该不该写技术文档,怎么写文档,易懂又能提升自己...

    最近公司项目的调用量突然涨了一大波,很多系统都纷纷扛不住了,于是需要对系统进行优化,系统优化的第一步,便是梳理业务! 在这个过程中,经常出现了这样一些情况,发现数据库的某些字段,没有注释,也没有一定的 ...

  8. netty java开发文档_Netty简明教学文档

    写个简单点,比较小白的文档,言语比较接地气 Netty是什么? NIO的高层封装,NIO很难写,所以有了Netty,方便异步的操作 service的主要代码片段 public void run() t ...

  9. netty java开发文档_《Netty官方文档》设置开发环境

    原文链接 译者:dan   QQ:903585177 请注意:这个指南并不是用户指南,它是开发 Netty 本身的指南,而不是使用Netty 开发其他程序的指南. 使用64位操作系统 必须使用64位操 ...

  10. java 开发文档协作_Java 网络编程---分布式文件协同编辑器设计与实现

    目录: 第一部分:Java网络编程知识 (一)简单的Http请求 一般浏览网页时,使用的时Ip地址,而IP(Internet Protocol,互联网协议)目前主要是IPv4和IPv6. IP地址是一 ...

最新文章

  1. 计算机网络第一章:计算机网络概述
  2. Android Webview H5 秒开方案实现
  3. 铁幕(Iron Curtain)
  4. 【linux】Ubuntu 18.04 设置桌面快捷启动方式
  5. python笔记小白入门_Python 笔记:全网最详细最小白的Class类和实例详解
  6. 《HTML5+CSS3网页设计入门必读》——2.8 转变(CH-CH变化)
  7. 程序员 520 表白:我写算法只为找到你!
  8. [[UIScreen mainScreen] bounds] 返回的屏幕尺寸不对
  9. html中offsetTop、clientTop、scrollTop、offsetTop
  10. nohup启动jar_nohup命令详解
  11. android Rect
  12. redmine backlogs的tracker使用
  13. php 继承 父类使用子类,在PHP中使用 来 实现子类和父类之间的继承 。
  14. 爱普生Epson Artisan 800 一体机驱动
  15. Windows+GCC得到各种格式的文件正文(office文件,PDF,邮件,html,zip等)
  16. numeric_limits
  17. SPH模拟超高速碰撞——基于Ls-Prepost和Ls-Dyna
  18. PCIe系列专题之二:2.1 TLP的前世今生
  19. 微信朋友圈公众号装B神器网站源码+可用于引流
  20. shell命令之zip压缩和解压

热门文章

  1. 【TWVRP】基于matlab改进的遗传算法求解带时间窗约束多卫星任务规划问题【含Matlab源码 1774期】
  2. 【优化预测】基于matlab EMD优化SVR数据预测【含Matlab源码 1403期】
  3. python坐标系教程_python Shapely使用指南详解
  4. 张北草原和锡林郭勒草原区别_草原:比您不知道的恶魔还强
  5. dbscan js 实现_DBSCAN在PySpark上的实现
  6. 机器学习 深度学习 ai_用AI玩世界末日:深度Q学习的多目标优化
  7. android 自定义adjustnothing,Android应用开发之自定义控件:Flag标签
  8. c语言累加和校验_累加和校验算法(CheckSum算法)
  9. c语言链表插入尾部,为什么我的程序一执行插入链表尾部,再执行别的操作就会出现问题,...
  10. linux终端 图形库,Linux终端图形库 Curses简介和实例分析