effective-java-3rd-chinese/docs/notes
2019-04-05 16:12:57 +08:00
..
01. 考虑使用静态工厂方法替代构造方法.md update markdown code statement 2019-03-14 14:02:05 +08:00
02. 当构造方法参数过多时使用builder模式.md update markdown code statement 2019-03-14 14:02:05 +08:00
03. 使用私有构造方法或枚类实现Singleton属性.md update markdown code statement 2019-03-14 14:02:05 +08:00
04. 使用私有构造方法执行非实例化.md update markdown code statement 2019-03-14 14:02:05 +08:00
05. 使用依赖注入取代硬连接资源(hardwiring resources).md update 05. 使用依赖注入取代硬连接资源(hardwiring resources) 2019-04-03 20:32:46 +08:00
06. 避免创建不必要的对象.md update markdown code statement 2019-03-14 14:02:05 +08:00
07. 消除过期的对象引用.md update markdown code statement 2019-03-14 14:02:05 +08:00
08. 避免使用Finalizer和Cleaner机制.md update markdown code statement 2019-03-14 14:02:05 +08:00
09. 使用try-with-resources语句替代try-finally语句.md update 9. 使用 try-with-resources 语句替代 try-finally 语句 2019-04-05 16:12:57 +08:00
10. 重写equals方法时遵守通用约定.md update markdown code statement 2019-03-14 14:02:05 +08:00
11. 重写equals方法时同时也要重写hashcode方法.md update 11. 重写 equals 方法时同时也要重写 hashcode 方法 2019-04-03 20:28:50 +08:00
12. 始终重写 toString 方法.md update markdown code statement 2019-03-14 14:02:05 +08:00
13. 谨慎地重写 clone 方法.md update markdown code statement 2019-03-14 14:02:05 +08:00
14. 考虑实现Comparable接口.md update markdown code statement 2019-03-14 14:02:05 +08:00
15. 使类和成员的可访问性最小化.md update 2019-04-05 15:09:19 +08:00
16. 在公共类中使用访问方法而不是公共属性.md update markdown code statement 2019-03-14 14:02:05 +08:00
17. 最小化可变性.md update markdown code statement 2019-03-14 14:02:05 +08:00
18. 组合优于继承.md update markdown code statement 2019-03-14 14:02:05 +08:00
19. 如使用继承则设计,应当文档说明,否则不该使用.md 如使用继承则设计,应当文档说明,否则不该使用 2019-03-15 11:41:56 +08:00
20. 接口优于抽象类.md update markdown code statement 2019-03-14 14:02:05 +08:00
21. 为后代设计接口.md update markdown code statement 2019-03-14 14:02:05 +08:00
22. 接口仅用来定义类型.md update markdown code statement 2019-03-14 14:02:05 +08:00
23. 优先使用类层次而不是标签类.md update markdown code statement 2019-03-14 14:02:05 +08:00
24. 优先考虑静态成员类.md update markdown code statement 2019-03-14 14:02:05 +08:00
25. 将源文件限制为单个顶级类.md update markdown code statement 2019-03-14 14:02:05 +08:00
26. 不要使用原始类型.md update markdown code statement 2019-03-14 14:02:05 +08:00
27. 消除非检查警告.md Update 27. 消除非检查警告.md 2019-03-14 15:02:03 +08:00
28. 列表优于数组.md update markdown code statement 2019-03-14 14:02:05 +08:00
29. 优先考虑泛型.md update markdown code statement 2019-03-14 14:02:05 +08:00
30. 优先使用泛型方法.md update markdown code statement 2019-03-14 14:02:05 +08:00
31. 使用限定通配符来增加API的灵活性.md update markdown code statement 2019-03-14 14:02:05 +08:00
32. 合理地结合泛型和可变参数.md update markdown code statement 2019-03-14 14:02:05 +08:00
33. 优先考虑类型安全的异构容器.md update markdown code statement 2019-03-14 14:02:05 +08:00
34. 使用枚举类型替代整型常量.md update markdown code statement 2019-03-14 14:02:05 +08:00
35. 使用实例属性替代序数.md update markdown code statement 2019-03-14 14:02:05 +08:00
36. 使用EnumSet替代位属性.md update markdown code statement 2019-03-14 14:02:05 +08:00
37. 使用EnumMap替代序数索引.md update markdown code statement 2019-03-14 14:02:05 +08:00
38. 使用接口模拟可扩展的枚举.md update markdown code statement 2019-03-14 14:02:05 +08:00
39. 注解优于命名模式.md update markdown code statement 2019-03-14 14:02:05 +08:00
40. 始终使用Override注解.md update markdown code statement 2019-03-14 14:02:05 +08:00
41. 使用标记接口定义类型.md docsify 2019-03-14 13:10:17 +08:00
42. lambda表达式优于匿名类.md 42. lambda 表达式优于匿名类 2019-04-03 20:40:36 +08:00
43. 方法引用优于lambda表达式.md update markdown code statement 2019-03-14 14:02:05 +08:00
44. 优先使用标准的函数式接口.md update markdown code statement 2019-03-14 14:02:05 +08:00
45. 明智审慎地使用Stream.md update markdown code statement 2019-03-14 14:02:05 +08:00
46. 优先考虑流中无副作用的函数.md update markdown code statement 2019-03-14 14:02:05 +08:00
47. 优先使用Collection而不是Stream来作为方法的返回类型.md update markdown code statement 2019-03-14 14:02:05 +08:00
48. 谨慎使用流并行.md update markdown code statement 2019-03-14 14:02:05 +08:00
49. 检查参数有效性.md update markdown code statement 2019-03-14 14:02:05 +08:00
50. 必要时进行防御性拷贝.md update markdown code statement 2019-03-14 14:02:05 +08:00
51. 仔细设计方法签名.md update markdown code statement 2019-03-14 14:02:05 +08:00
52. 明智审慎地使用重载.md docsify 2019-03-14 13:10:17 +08:00
53. 明智审慎地使用可变参数.md update 53. 明智审慎地使用可变参数.md 2019-03-20 14:07:31 +08:00
54. 返回空的数组或集合,不要返回 null.md 54. 返回空的数组或集合,不要返回 null.md 2019-03-20 14:11:27 +08:00
55. 明智审慎地返回 Optional.md 55. 明智审慎地返回 Optional.md 2019-03-20 14:17:11 +08:00
56. 为所有已公开的 API 元素编写文档注释.md 56. 为所有已公开的 API 元素编写文档注释.md 2019-03-20 14:24:56 +08:00
57. 最小化局部变量的作用域.md 57. 最小化局部变量的作用域 2019-03-20 14:35:32 +08:00
58. for-each 循环优于传统 for 循环.md for-each 循环优于传统 for 循环 2019-03-20 14:41:18 +08:00
59. 了解并使用库.md update 59. 了解并使用库 2019-03-20 14:50:31 +08:00
60. 若需要精确答案就应避免使用 float 和 double 类型.md 60. 若需要精确答案就应避免使用 float 和 double 类型 2019-03-20 14:49:59 +08:00
61. 基本数据类型优于包装类.md 61. 基本数据类型优于包装类 2019-03-20 14:54:19 +08:00
62. 当使用其他类型更合适时应避免使用字符串.md 62. 当使用其他类型更合适时应避免使用字符串.md 2019-03-20 14:58:10 +08:00
63. 当心字符串连接引起的性能问题.md 63. 当心字符串连接引起的性能问题.md 2019-03-20 14:59:53 +08:00
64. 通过接口引用对象.md 64 2019-03-20 15:02:29 +08:00
65. 接口优于反射.md 65. 接口优于反射 2019-03-20 15:06:43 +08:00
66. 明智审慎地本地方法.md 66. 明智审慎地本地方法 2019-03-20 15:09:25 +08:00
67. 明智审慎地进行优化.md 67. 明智审慎地进行优化.md 2019-03-20 15:16:36 +08:00
68. 遵守被广泛认可的命名约定.md 68. 遵守被广泛认可的命名约定 2019-03-20 15:20:38 +08:00
69. 只针对异常的情况下才使用异常.md update markdown code statement 2019-03-14 14:02:05 +08:00
70. 对可恢复的情况使用受检异常,对编程错误使用运行时异常.md docsify 2019-03-14 13:10:17 +08:00
71. 避免不必要的使用受检异常.md docsify 2019-03-14 13:10:17 +08:00
72. 优先使用标准的异常.md docsify 2019-03-14 13:10:17 +08:00
73. 抛出与抽象对应的异常.md docsify 2019-03-14 13:10:17 +08:00
74. 每个方法抛出的异常都需要创建文档.md docsify 2019-03-14 13:10:17 +08:00
75. 在细节消息中包含失败一捕获信息.md docsify 2019-03-14 13:10:17 +08:00
76. 保持失败原子性.md docsify 2019-03-14 13:10:17 +08:00
77. 不要忽略异常.md docsify 2019-03-14 13:10:17 +08:00
78. 同步访问共享的可变数据.md update 2019-03-15 14:04:21 +08:00
79. 避免过度同步.md update 2019-03-16 15:50:05 +08:00
80. executor 、task 和 stream 优先于线程.md Update 80. executor 、task 和 stream 优先于线程.md 2019-04-05 15:00:33 +08:00
81. 相比 wait 和 notify 优先使用并发工具.md update 2019-04-05 15:25:41 +08:00
82. 文档应包含线程安全属性.md update 2019-03-20 11:30:08 +08:00
83. 明智审慎的使用延迟初始化.md update 2019-03-20 11:39:38 +08:00
84. 不要依赖线程调度器.md update : 84. 不要依赖线程调度器 2019-04-05 15:59:53 +08:00
85. 优先选择 Java 序列化的替代方案.md 85. 优先选择 Java 序列化的替代方案.md 2019-03-20 11:55:26 +08:00
86. 非常谨慎地实现 Serializable.md 86. 非常谨慎地实现 Serializable.md 2019-03-20 12:01:07 +08:00
87. 考虑使用自定义的序列化形式.md update 2019-04-05 16:08:02 +08:00
88. 保护性的编写 readObject 方法.md update markdown code statement 2019-03-14 14:02:05 +08:00
89. 对于实例控制,枚举类型优于 readResolve.md update markdown code statement 2019-03-14 14:02:05 +08:00
90. 考虑用序列化代理代替序列化实例.md update markdown code statement 2019-03-14 14:02:05 +08:00