Effective Java 3 读后感
禁止转载。
搬运一下两年多前在博客园写的文章,作了小幅修改。
最近学习了一下Effective Java,这是本非常适合有经验的Java开发人员阅读的书。书中总结许多编码经验对开发很有帮助,比如其中总结的对于流和Lambda表达式、泛型的建议,我在实际工作中也经常遇到,自己总结的开发经验和这本书中介绍的也是“英雄所见略同”;还有一些开发中不曾注意的点,比如toString方法,clone方法,枚举类的使用,异常处理规范,序列化的问题,本书也做了相当精彩的总结。总之,这本书是Java进阶的好书。
很多问题是共通的,我们不妨多阅读其他高手的书籍或文章,这样的学习结果比自己研究效率更高。
我阅读的是英文版,对比Github上的中文版,好处是能准确传达作者的原意,便于准确理解,缺点是阅读速度大约是中文阅读的1.5倍,同时我没有中文版那样“一目十行”的能力(大概扫一眼就知道这一段的大致意思),英文版只能一点一点地读。中文版的好处是适合快速学习,翻译基本能用,缺点是有些词我还要再翻译到英文才顺眼,不能很好地表现逻辑关系,不像英文中有明显的介词和从句结构。
举个例子:
条目 18 中提醒你注意继承没有设计和文档说明的「外来」类的子类化的危险。 那么对于专门为了继承而设计并且具有良好文档说明的类而言,这又意味着什么呢?
首先,这个类必须准确地描述重写每个方法带来的影响。 换句话说,该类必须文档说明可重写方法的自用性(self-use)。 对于每个 public 或者 protected 的方法,文档必须指明方法调用哪些可重写方法,以何种顺序调用的,以及每次调用的结果又是如何影响后续处理。 (重写方法,这里是指非
final修饰的方法,无论是公开还是保护的。)更一般地说,一个类必须文档说明任何可能调用可重写方法的情况。 例如,后台线程或者静态初始化代码块可能会调用这样的方法。
你应该尽早阅读英文版
声明:以下仅为个人理解
优点:
- 专业名词不用翻译,可以直接理解(比如default -> 缺省/默认值, socket -> 套接字, Referent -> 不知道如何翻译,意为被引用对象)
- 结构清晰,可以轻松划分句子成分
- 写代码时,帮助解决命名的难题
- 帮助理解代码
- 提前学习最新的知识
缺点: 初期阅读理解速度慢,但是会随着阅读量的上升逐步提高阅读速度。
总之,在学习的早期,应该尽早适应英文。笔者初学时,On Java 8 (Java编程思想)先是中文版阅读了一遍,之后又看了两遍英文版,才体会到了英文阅读能力的提升。
中文版的好处是信息密度高,可以实现高度凝练的总结。学习后期就可以过渡到先看英文学习,再看中文总结的阶段,最终可以自己总结知识。