简介: Java之父James Gosling鼎力推荐、Jolt获奖作品全新升级,针对Java 7、8、9全面更新,Java程序员必备参考书。包含大量完整的示例代码和透彻的技术分析,通过90条经验法则,探索新的设计模式和语言习惯用法,帮助读者更加有效地使用Java编程语言及其基本类库。
PDF 下载地址: https://share.weiyun.com/CD2aC4Q1
1.用静态工厂方法代替构造方法
2.当构造方法参数过多时使用 builder 模式
3.使用私有构造方法或枚举实现 Singleton 模式
4.使用私有构造方法执行非实例化
5.优先考虑依赖注入来引用资源
6.避免创建不必要的对象
7.消除过期的对象引用
8.避免使用 finaliizer 和 cleaner 机制
9.try-with-resources 优于 try-finally
10.重写 equals 方法时请遵守通用约定
11.重写 equals 方法时也要重写 hashCode 方法
12.始终重写 toString 方法
13.谨慎地重写 clone 方法
14.考虑实现 Comparable 接口
15.使类和成员的可访问性最小化
16.在公共类中使用访问方法而不是公共属性
17.使可变性最小化
18.组合优于继承
19.要么对继承进行设计并提供文档说明,要么禁用继承
20.接口优于抽象类
21.为后代设计接口
22.接口仅用于定义类型
23.优先使用类层次而不是标签类
24.静态成员类优于非静态成员类
25.限制源文件为单个顶级类
26.不要使用原生态类型
27.消除非受检警告
28.列表优于数组
29.优先考虑泛型
30.优先使用泛型方法
31.使用限定通配符来增加 API 的灵活性
32.合理地结合泛型和可变参数
33.优先考虑类型安全的异构容器
34.使用 enum 代替 int 常量
35.使用实例属性替代序数
36.使用 EnumSet 代替位属性
37.使用 EnumMap 代替序数索引
38.使用接口模拟可扩展的枚举
39.注解优于命名模式
40.始终使用 Override 注解
41.使用标记接口定义类型
42.lambda 表达式优于匿名类
43.方法引用优于 lambda 表达式
44.优先使用标准的函数式接口
45.谨慎使用 Stream
46.优先选择 Stream 中无副作用的函数
47.优先使用 Collection 而不是 Stream 来作为方法的返回类型
48.谨慎使用 Stream 并行
49.检查参数有效性
50.必要时进行保护性拷贝
51.谨慎设计方法签名
52.慎用重载
53.慎用可变参数
54.返回零长度的数组或集合,而不是 null
55.谨慎返回 Optional
56.为所有已公开的 API 元素编写文档注释
57.将局部变量的作用域最小化
58.for-each 循环优于传统 for 循环
59.了解和使用类库
60.若需要精确答案就应避免使用 float 和 double 类型
61.基本数据类型优于装箱类
62.当使用其他类型更合适时,则尽量避免使用字符串
63.当心字符串连接引起的性能问题
64.通过接口引用对象
65.接口优于反射机制
66.谨慎地使用本地方法
67.谨慎地进行优化
68.遵守普遍接受的命名惯例
69.只针对异常的情况下才使用异常
70.对可恢复的情况使用受检异常,对编程错误使用运行时异常
71.避免不必要地使用受检异常
72.优先使用标准的异常
73.抛出与抽象对应的异常
74.每个方法抛出的所有异常都需要创建文档
75.在细节消息中包含失败——捕获消息
76.尽量使失败保持原子性
77.不要忽略异常
78.同步访问共享的可变数据
79.避免过度同步
80.executor、task 和 stream 优先于线程
81.并发工具优先于 wait 和 notify
82.文档应包含线程安全属性
83.慎用延迟初始化
84.不要依赖于线程调度器
85.其他方法优先于 Java 序列化
86.谨慎地实现 Serializable 接口
87.考虑使用自定义的序列化形式
88.保护性的编写 readObject 方法
89.对于实例控制,枚举类优于 readResolve
90.考虑用序列化代理代替序列化实例