• 《阿里巴巴JAVA开发手册》

  • 价格:免费
  • 状态:全书已完结
  • 在读人数:6
  • 热度:645
创建者
内容简介
《阿里巴巴Java开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,系统化地整理成册,回馈给广大开发者。
章节目录
  • 前言
  • 《阿里巴巴Java开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,系统化地整理成册,回馈给广大开发者。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是
  • 第一章 编码规约
  • 1.1 命名风格
  • (一) 命名风格1. 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 反例:_name _name_name / __name__name __name __name / $name$name $name / name_name_ name_ / name$ name$ name$ / name__ name__ name__2. 【强制】代码中的命名严禁使用
  • 1.2 常量定义
  • 1. 【强制】不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。 反例:String key = "Id#taobao_" + tradeId; cache.put(key, value);2. 【强制】在long或者Long赋值时,数值后使用大写的L,不能是小写的l,小写容易跟数字1混淆,造成误解。 说明:Long a = 2l; 写的是数字的21,还是L
  • 1.3 代码格式
  • 1. 【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则: 1) 左大括号前不换行。 2) 左大括号后换行。 3) 右大括号前换行。 4) 右大括号后还有else等代码则不换行;表示终止的右大括
  • 1.4 OOP 规约
  • 1. 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。2. 【强制】所有的覆写方法,必须加@Override注解。 说明:getObject()与get0bject()的问题。一个是字母的O,一个是数字的0,加@Override可以准确判断是否覆盖成功。另外,如果在抽象类中对方法签名进行修改,其实现类会马上编译报
  • 1.5 集合处理
  • 1. 【强制】关于hashCode和equals的处理,遵循如下规则: 1) 只要重写equals,就必须重写hashCode。 2) 因为Set存储的是不重复的对象,依据hashCode和equals进行判断,所以Set存储的对象必须重写这两个方法。 3) 如果自定义对象作为Map的键,那么必须重写h
  • 1.6 并发处理
  • 1. 【强制】获取单例对象需要保证线程安全,其中的方法也要保证线程安全。 说明:资源驱动类、工具类、单例工厂类都需要注意。2. 【强制】创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。 正例: public class TimerTaskThread extends Thread
  • 1.7 控制语句
  • 1. 【强制】在一个switch块内,每个case要么通过break/return等来终止,要么注释说明程序将继续执行到哪一个case为止;在一个switch块内,都必须包含一个default语句并且放在最后,即使空代码。2. 【强制】在if/else/for/while/do语句中
  • 1.8 注释规约
  • 1. 【强制】类、类属性、类方法的注释必须使用Javadoc规范,使用/**内容*/格式,不得使用// xxx方式。 说明:在IDE编辑窗口中,Javadoc方式会提示相关注释,生成Javadoc可以正确输出相应注释;在IDE中,工程调用方法时,不进入方法即可悬浮提示方法
  • 1.9 其它
  • 1. 【强制】在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度。 说明:不要在方法体内定义:Pattern pattern = Pattern.compile(“规则”);2. 【强制】velocity调用POJO类的属性时,建议直接使用属性名取值即可,模板引擎会自动按规范调用POJO的getXxx(),如果是boolean基本数据类型变量(b
  • 第二章 异常日志
  • 2.1 异常处理
  • 1. 【强制】Java 类库中定义的可以通过预检查方式规避的RuntimeException异常不应该通过catch 的方式来处理,比如:NullPointerException,IndexOutOfBoundsException等等。 说明:无法通过预检查的异常除外,比如,在解析字符串形式的数字时,不得不通过catch Numbe
  • 2.2 日志规约
  • 1. 【强制】应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架SLF4J中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。 import org.slf4j.Logger;
  • 第三章 单元测试
  • 1. 【强制】好的单元测试必须遵守AIR原则。 说明:单元测试在线上运行时,感觉像空气(AIR)一样并不存在,但在测试质量的保障上,却是非常关键的。好的单元测试宏观上来说,具有自动化、独立性、可重复执行的特点。  A:Aut
  • 第四章 安全规约
  • 1. 【强制】隶属于用户个人的页面或者功能必须进行权限控制校验。 说明:防止没有做水平权限校验就可随意访问、修改、删除别人的数据,比如查看他人的私信内容、修改他人的订单。2. 【强制】用户敏感数据禁止直接展示,必须对展示数据进行脱敏。 说明:中国大陆个人手机号码显示为:158****9119,隐藏中间4位,防止隐私泄露。3. 【强制】用
  • 第五章 MySQL数据库
  • 5.1 建表规约
  • 1. 【强制】表达是与否概念的字段,必须使用 is_xxx的方式命名,数据类型是 unsigned tinyint(1表示是, 表示否)。 说明: 任何字段如果为非负数,必须是 unsigned。 注意: POJO类中的任何布尔型变量,都不要加 类中的任何布尔型变量,都不要加 类中的任何布尔型变量,都不要加 is前缀,所以需要在
  • 5.2 索引规约
  • 1. 【强制】业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引。 说明:不要以为唯一索引影响了insert速度,这个速度损耗可以忽略,但提高查找速度是明显的;另外,即使在应用层做了非常完善的校验控制,只要没有唯一索引,根据墨菲定律,必然有脏数据产生。2. 【强
  • 5.3 SQL语句
  • 1. 【强制】不要使用count(列名)或count(常量)来替代count(*),count(*)是SQL92定义的标准统计行数的语法,跟数据库无关,跟NULL和非NULL无关。 说明:count(*)会统计值为NULL的行,而count(列名)不会统计此列为NULL值的行。2.
  • 5.4 ORM映射
  • 1. 【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。说明:1)增加查询分析器解析成本。2)增减字段容易与resultMap配置不一致。3)无用字段增加网络消耗,尤其是text类型的字段。2. 【强制】POJO类的布尔属性不能加is,而数据库字段必
  • 第六章 工程结构
  • 6.1 应用分层
  • 1. 【推荐】图中默认上层依赖于下层,箭头关系表示可直接依赖,如:开放接口层可以依赖于Web层,也可以直接依赖于Service层,依此类推: 开放接口层:可直接封装Service方法暴露成RPC接口;通过Web封装成http接口;进行网关安全控制
  • 6.2 二方库依赖
  • 1. 【强制】定义GAV遵从以下规则: 1) GroupID格式:com.{公司/BU }.业务线 [.子业务线],最多4级。 说明:{公司/BU} 例如:alibaba/taobao/tmall/aliexpress等BU一
  • 6.3 服务器
  • 1. 【推荐】高并发服务器建议调小TCP协议的time_wait超时时间。 说明:操作系统默认240秒后,才会关闭处于time_wait状态的连接,在高并发访问下,服务器端会因为处于time_wait的连接数
  • 第七章 设计规约
  • 1. 【强制】存储方案和底层数据结构的设计获得评审一致通过,并沉淀成为文档。 说明:有缺陷的底层数据结构容易导致系统风险上升,可扩展性下降,重构成本也会因历史数据迁移和系统平滑过渡而陡然增加,所以,存储方案和数据结构需要认真地进行设计和评审,生产环境提交执行后,需要进
  • 第八章 附录
  • 8.1 专有名词解释
  • 1. POJO(Plain Ordinary Java Object): 在本手册中,POJO专指只有setter / getter / toString的简单类,包括DO/DTO/BO/VO等。 2. GAV(GroupId、ArtifactctId、Version): Maven坐标,是用来唯一标识jar包。 3. OOP(Obje
读者评论