作者:
[美] Joshua Bloch
出版社: 机械工业出版社
原作名: Effective Java Third Edition
译者: 俞黎敏
出版年: 2018-12-11
页数: 311
定价: 119元
装帧: 平装
丛书: Effective系列丛书
ISBN: 9787111612728
出版社: 机械工业出版社
原作名: Effective Java Third Edition
译者: 俞黎敏
出版年: 2018-12-11
页数: 311
定价: 119元
装帧: 平装
丛书: Effective系列丛书
ISBN: 9787111612728
内容简介 · · · · · ·
本书一共包含90个条目,每个条目讨论Java程序设计中的一条规则。这些规则反映了最有经验的优秀程序员在实践中常用的一些有益的做法。
全书以一种比较松散的方式将这些条目组织成11章,每一章都涉及软件设计的一个主要方面。因此,本书并不一定需要按部就班地从头读到尾,因为每个条目都有一定程度的独立性。这些条目相互之间经常交叉引用,因此可以很容易地在书中找到自己需要的内容。
本书的目标是帮助读者更加有效地使用Java编程语言及其基本类库:java.lang、java.util和java.io,以及子包,如java.util.concurrent和java.util.function。本书时不时地也会讨论其他的类库。
Effective Java中文版(第3版)的创作者
· · · · · ·
-
Joshua Bloch 作者
作者简介 · · · · · ·
Joshua Bloch是Google公司的首席Java架构师。是Jolt大奖的获得者。他曾是Sun公司的杰出工程师,和Transarc公司的高级系统设计师。Bloch曾带领团队设计和实现过无数的Java平台特性,包括JDK 5.0语言增强版和获奖的Java Collections Framework。他的著作还包括:《Java Puzzlers》、《Java Concurrency in Practive》等。
目录 · · · · · ·
推荐序
译者序
前言
致谢
第1章 引言 1
第2章 创建和销毁对象 4
第1条:用静态工厂方法代替构造器 4
第2条:遇到多个构造器参数时要考虑使用构建器 8
第3条:用私有构造器或者枚举类型强化Singleton属性 13
第4条:通过私有构造器强化不可实例化的能力 15
第5条:优先考虑依赖注入来引用资源 16
第6条:避免创建不必要的对象 18
第7条:消除过期的对象引用 20
第8条:避免使用终结方法和清除方法 23
第9条:try-with-resources优先于try-finally 27
第3章 对于所有对象都通用的方法 30
第10条:覆盖equals时请遵守通用约定 30
第11条:覆盖equals时总要覆盖hashCode 40
第12条:始终要覆盖toString 44
第13条:谨慎地覆盖clone 46
第14条:考虑实现Comparable接口 53
第4章 类和接口 59
第15条:使类和成员的可访问性最小化 59
第16条:要在公有类而非公有域中使用访问方法 62
第17条:使可变性最小化 64
第18条:复合优先于继承 70
第19条:要么设计继承并提供文档说明,要么禁止继承 75
第20条:接口优于抽象类 79
第21条:为后代设计接口 83
第22条:接口只用于定义类型 85
第23条:类层次优于标签类 86
第24条:静态成员类优于非静态成员类 88
第25条:限制源文件为单个顶级类 91
第5章 泛型 93
第26条:请不要使用原生态类型 93
第27条:消除非受检的警告 97
第28条:列表优于数组 99
第29条:优先考虑泛型 102
第30条:优先考虑泛型方法 106
第31条:利用有限制通配符来提升API的灵活性 109
第32条:谨慎并用泛型和可变参数 114
第33条:优先考虑类型安全的异构容器 118
第6章 枚举和注解 123
第34条:用enum代替int常量 123
第35条:用实例域代替序数 131
第36条:用EnumSet代替位域 132
第37条:用EnumMap代替序数索引 134
第38条:用接口模拟可扩展的枚举 138
第39条:注解优先于命名模式 140
第40条:坚持使用Override注解 147
第41条:用标记接口定义类型 149
第7章 Lambda和Stream 151
第42条:Lambda优先于匿名类 151
第43条:方法引用优先于Lambda 154
第44条:坚持使用标准的函数接口 156
第45条:谨慎使用Stream 159
第46条:优先选择Stream中无副作用的函数 164
第47条:Stream要优先用Collection作为返回类型 168
第48条:谨慎使用Stream并行 172
第8章 方法 176
第49条:检查参数的有效性 176
第50条:必要时进行保护性拷贝 179
第51条:谨慎设计方法签名 182
第52条:慎用重载 184
第53条:慎用可变参数 189
第54条:返回零长度的数组或者集合,而不是null 190
第55条:谨慎返回optinal 192
第56条:为所有导出的API元素编写文档注释 196
第9章 通用编程 202
第57条:将局部变量的作用域最小化 202
第58条:for-each循环优先于传统的for循环 204
第59条:了解和使用类库 207
第60条:如果需要精确的答案,请避免使用float和double 209
第61条:基本类型优先于装箱基本类型 211
第62条:如果其他类型更适合,则尽量避免使用字符串 213
第63条:了解字符串连接的性能 215
第64条:通过接口引用对象 216
第65条:接口优先于反射机制 218
第66条:谨慎地使用本地方法 220
第67条:谨慎地进行优化 221
第68条:遵守普遍接受的命名惯例 223
第10章 异常 227
第69条:只针对异常的情况才使用异常 227
第70条:对可恢复的情况使用受检异常,对编程错误使用运行时异常 229
第71条:避免不必要地使用受检异常 231
第72条:优先使用标准的异常 232
第73条:抛出与抽象对应的异常 234
第74条:每个方法抛出的所有异常都要建立文档 235
第75条:在细节消息中包含失败-捕获信息 237
第76条:努力使失败保持原子性 238
第77条:不要忽略异常 239
第11章 并发 241
第78条:同步访问共享的可变数据 241
第79条:避免过度同步 245
第80条:executor、task和stream优先于线程 250
第81条:并发工具优先于wait和notify 251
第82条:线程安全性的文档化 256
第83条:慎用延迟初始化 258
第84条:不要依赖于线程调度器 261
第12章 序列化 263
第85条:其他方法优先于Java序列化 263
第86条:谨慎地实现Serializable接口 266
第87条:考虑使用自定义的序列化形式 269
第88条:保护性地编写readObject方法 274
第89条:对于实例控制,枚举类型优先于readResolve 279
第90条:考虑用序列化代理代替序列化实例 282
附录 与第2版中条目的对应关系 286
参考文献 289
· · · · · · (收起)
译者序
前言
致谢
第1章 引言 1
第2章 创建和销毁对象 4
第1条:用静态工厂方法代替构造器 4
第2条:遇到多个构造器参数时要考虑使用构建器 8
第3条:用私有构造器或者枚举类型强化Singleton属性 13
第4条:通过私有构造器强化不可实例化的能力 15
第5条:优先考虑依赖注入来引用资源 16
第6条:避免创建不必要的对象 18
第7条:消除过期的对象引用 20
第8条:避免使用终结方法和清除方法 23
第9条:try-with-resources优先于try-finally 27
第3章 对于所有对象都通用的方法 30
第10条:覆盖equals时请遵守通用约定 30
第11条:覆盖equals时总要覆盖hashCode 40
第12条:始终要覆盖toString 44
第13条:谨慎地覆盖clone 46
第14条:考虑实现Comparable接口 53
第4章 类和接口 59
第15条:使类和成员的可访问性最小化 59
第16条:要在公有类而非公有域中使用访问方法 62
第17条:使可变性最小化 64
第18条:复合优先于继承 70
第19条:要么设计继承并提供文档说明,要么禁止继承 75
第20条:接口优于抽象类 79
第21条:为后代设计接口 83
第22条:接口只用于定义类型 85
第23条:类层次优于标签类 86
第24条:静态成员类优于非静态成员类 88
第25条:限制源文件为单个顶级类 91
第5章 泛型 93
第26条:请不要使用原生态类型 93
第27条:消除非受检的警告 97
第28条:列表优于数组 99
第29条:优先考虑泛型 102
第30条:优先考虑泛型方法 106
第31条:利用有限制通配符来提升API的灵活性 109
第32条:谨慎并用泛型和可变参数 114
第33条:优先考虑类型安全的异构容器 118
第6章 枚举和注解 123
第34条:用enum代替int常量 123
第35条:用实例域代替序数 131
第36条:用EnumSet代替位域 132
第37条:用EnumMap代替序数索引 134
第38条:用接口模拟可扩展的枚举 138
第39条:注解优先于命名模式 140
第40条:坚持使用Override注解 147
第41条:用标记接口定义类型 149
第7章 Lambda和Stream 151
第42条:Lambda优先于匿名类 151
第43条:方法引用优先于Lambda 154
第44条:坚持使用标准的函数接口 156
第45条:谨慎使用Stream 159
第46条:优先选择Stream中无副作用的函数 164
第47条:Stream要优先用Collection作为返回类型 168
第48条:谨慎使用Stream并行 172
第8章 方法 176
第49条:检查参数的有效性 176
第50条:必要时进行保护性拷贝 179
第51条:谨慎设计方法签名 182
第52条:慎用重载 184
第53条:慎用可变参数 189
第54条:返回零长度的数组或者集合,而不是null 190
第55条:谨慎返回optinal 192
第56条:为所有导出的API元素编写文档注释 196
第9章 通用编程 202
第57条:将局部变量的作用域最小化 202
第58条:for-each循环优先于传统的for循环 204
第59条:了解和使用类库 207
第60条:如果需要精确的答案,请避免使用float和double 209
第61条:基本类型优先于装箱基本类型 211
第62条:如果其他类型更适合,则尽量避免使用字符串 213
第63条:了解字符串连接的性能 215
第64条:通过接口引用对象 216
第65条:接口优先于反射机制 218
第66条:谨慎地使用本地方法 220
第67条:谨慎地进行优化 221
第68条:遵守普遍接受的命名惯例 223
第10章 异常 227
第69条:只针对异常的情况才使用异常 227
第70条:对可恢复的情况使用受检异常,对编程错误使用运行时异常 229
第71条:避免不必要地使用受检异常 231
第72条:优先使用标准的异常 232
第73条:抛出与抽象对应的异常 234
第74条:每个方法抛出的所有异常都要建立文档 235
第75条:在细节消息中包含失败-捕获信息 237
第76条:努力使失败保持原子性 238
第77条:不要忽略异常 239
第11章 并发 241
第78条:同步访问共享的可变数据 241
第79条:避免过度同步 245
第80条:executor、task和stream优先于线程 250
第81条:并发工具优先于wait和notify 251
第82条:线程安全性的文档化 256
第83条:慎用延迟初始化 258
第84条:不要依赖于线程调度器 261
第12章 序列化 263
第85条:其他方法优先于Java序列化 263
第86条:谨慎地实现Serializable接口 266
第87条:考虑使用自定义的序列化形式 269
第88条:保护性地编写readObject方法 274
第89条:对于实例控制,枚举类型优先于readResolve 279
第90条:考虑用序列化代理代替序列化实例 282
附录 与第2版中条目的对应关系 286
参考文献 289
· · · · · · (收起)
丛书信息
· · · · · ·
Effective系列丛书(共13册),
这套丛书还有
《Effective Debugging》《Effective Ruby:改善Ruby程序的48条建议》《编写高质量代码:改善C程序代码的125个建议》《Effective JavaScript》《Effective C#(原书第3版)》
等
。
喜欢读"Effective Java中文版(第3版)"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"Effective Java中文版(第3版)"的人也喜欢 · · · · · ·
- Java 8实战 9.1
- MySQL技术内幕 8.4
- 现代操作系统(原书第4版) 8.9
- 架构整洁之道 8.7
- 图解Java多线程设计模式 9.0
- Spring实战(第4版) 8.1
- 微服务架构设计模式 9.0
- 数据密集型应用系统设计 9.6
- UNIX环境高级编程(第3版) 9.7
- 算法(第4版) 9.4
Effective Java中文版(第3版)的书评 · · · · · · ( 全部 56 条 )
《Effective Java》中学到的思想
序言 零散地读完《Effective Java》(中文版第二版),真心觉得这是一本经典书籍。现在想写一下读完这本书的整体收获,而不是涉及到书中某一个具体的知识点。 收获 在重点或疑问的地方,做出标记和注释 在读《Effective Java》时,对于前10条建议,我并没有理解得很深刻,...
(展开)
如何变成Java文艺青年
如果你使用刚刚学会的Java做了一个小应用程序,那么你就可以开始有选择地看这本书。书中分别对Java的不同特性分章节给予作者本人的建议。如果你还没有用到其中的某一特性,那么就没必要读相关的章节,跳过去。只有你经历过了,摔倒过了,困扰过了,你才会与书中的建议产生共鸣...
(展开)
> 更多书评 56篇
论坛 · · · · · ·
这本书哪里能买到电子版? | 来自Leos | 1 回应 | 2021-03-18 10:25:58 |
翻译质量怎么样?有无明显错误,会误导新人? | 来自局外人 | 6 回应 | 2021-01-24 17:55:50 |
感谢作者 | 来自kitewhere | 2019-02-26 23:53:36 |
这本书的其他版本 · · · · · · ( 全部13 )
-
机械工业出版社 (2009)9.1分 1819人读过
-
Addison-Wesley (2008)9.3分 283人读过
-
机械工业出版社 (2003)8.9分 1092人读过
-
Addison-Wesley Professional (2018)9.7分 181人读过
以下书单推荐 · · · · · · ( 全部 )
- IT 三级 Java程序设计语言、框架技术(实用性) 1.1.1.1.2 (ajian005)
- Java 8时代 (meantobe)
- 评分9分以上的计算机图书 (子苓)
- 待购书籍 (欧阳杼)
- Java 技术栈经典书籍 (镁铝合金)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有1390人想读,手里有一本闲着?
订阅关于Effective Java中文版(第3版)的评论:
feed: rss 2.0
7 有用 麒麟.NET 2021-01-29 11:26:24
翻译的硬伤太多
6 有用 epsilon 2021-03-01 20:16:49
翻译太垃圾了
4 有用 胡椒烩黑椒 2021-05-11 19:06:46
很不错的,看的第三版,有些用的不是很多,不是很熟悉,但是大部分都有很借鉴意义,适合长期阅读。作者也十分克制,没有一味地吹某个新技术,反而让大家慎重使用某些新技术。
17 有用 豆友189366176 2021-04-03 22:52:13
翻译的简直就是狗屁不同,第16条原著讲的多好,被你翻译的死活看不懂,以后还是少做点孽......
4 有用 小新 2020-06-07 20:21:44
非常实用,写代码最重要的不是写的快或者写着舒服,而且阅读和后期维护起来简单。非常喜欢书中的一句话:本书大部分内容都不是讨论性能的,而是关心如何编写出清晰、正确、可用、健壮、灵活和可维护的程序来。
0 有用 GreyZeng 2024-03-10 16:46:19 广东
五一假期看了一下这本经典的著作,颇有收获,不过还有很多不太明白的地方,后续还需要多读几遍
0 有用 Frankenstein 2024-01-26 16:09:29 广东
还好当初学Java不是通过看书来学习,这不得枯燥死。好好的编程成了背书
0 有用 乡村骑士 2024-01-19 12:22:37 日本
什么垃圾翻译 译者就是consult好意思翻译开发的东西,译者真正做过开发吗?这时代真是就怕你不敢做 原则上只要你敢做谁都可以做
0 有用 Realricecake 2023-09-22 11:42:34 上海
时隔多年又一次翻开了这本书,确实是一本神书
0 有用 浮生会少 2023-09-21 03:38:28 美国
很实用的编程技巧,对了解Java有帮助