Effective Java系列读后感-总纲

序言

最近自己订下了一个宏伟的目标-一周读一本书。而读书最为重要的就是践行,对于暂时没有办法践行的,教就是最好的学。分享也是一个不错的方式,这个系列的博客也是一种分享了。

章节目录

因为我还没有研读每章,所以每个章节下面的注解实际是我对书本内容的预测,也就是如果我写这个章节,可能会组织哪些内容。所以肯定和实际的内容是有出入的,等我完成每一章之后,会回过头来更新这部分的内容。

第一章 引言

引言这部分,作者主要介绍这本书的由来,为什么写这本书?这本书涵盖哪些内容?这本书和其它的Java书籍有哪些不同?这本书的读者应该是谁?读者应该怎么阅读这本书?读这本时的注意事项。

第二章 创建和销毁对象

这章的关注点是对象,所以作者首先应该介绍Java里面对象的重要性,然后我们编程的过程中,对于对象的使用有哪些误区,没有意识到哪些盲点,然后结合Java JVM的垃圾回收机制,给出我们使用对象的建议。

第1条:考虑使用静态方法代替构造器

第2条:遇到多个构造器参数时要考虑用构建器

第3条:用私有构造器或者枚举类型强化Singleton属性

第4条:通过私有构造器强化不可实例化的能力

第5条:避免创建不必要的对象

第6条:消除过期的对象引用

第7条:避免使用终结方法

第三章 对于所有对象都通用的方法

对于所有对象都通用的方法?这个会是什麽呢,暂时猜测不到。

第8条:覆盖equals时请遵守通用约定

第9条:覆盖equals时总要覆盖hashCode

第10条:始终要覆盖toString

第11条:谨慎地覆盖clone

第12条:考虑实现Comparable接口

第四章 类和接口

类和接口是Java里面非常重要的概念。Java里面的类是单继承,但是却可以实现多个接口。这章估计是比较类和接口的异同点。以及两个概念的优缺点。

第13条:使类和成员的可访问性最小化

第14条:在公有类中使用访问方法而非公有域

第15条:使可变性最小化

第16条:复合优先于继承

第17条:要么为继承而设计,并提供文档说明,要么就禁止继承

第18条:接口优于抽象类

第19条:接口只用于定义类型

第20条:类层次优于标签类

第21条:用函数对象表示策略

第22条:优先考虑静态成员类

第五章 泛型

首先简单介绍泛型,泛型是什么?怎么使用泛型?泛型是为了解决什么问题而被实现的?泛型被应用在了哪些地方?泛型还可以被用在哪些地方?泛型使用过程中的优缺点,如何规避这些优缺点?

第23条:请不要在新代码中使用原生态类型

第24条:消除非受检警告

第25条:列表优先于数组

第26条:优先考虑泛型

第27条:优先考虑泛型方法

第28条:利用有限制通配符来提升API的灵活性

第29条:优先考虑类型安全的异构容器

第六章 枚举和注解

首先应该会介绍枚举和注解的定义,为什么Java中会出现这两个概念,是什麽时候被引入到Java里面,怎么使用它们,使用它们的时候应该注意什么。这两个技术概念的优缺点。

第30条:用enum代替int常量

第31条:用实例域代替序数

第32条:用EnumSet代替位数

第33条:用EnumMap代替序数索引

第34条:用接口模拟可伸缩的枚举

第35条:注解优先于命名模式

第36条:坚持使用Override注解

第37条:用标记接口定义类型

第七章 方法

这是一个编程语言里面的非常重要的概念。对于一个对象而言,方法就是这个对象的行为。Java里面的方法会有什么特别的地方呢?重写?重载?多态?Java里面方法的定义和使用有没有什么特别的地方呢?

第38条:检查参数的有效性

第39条:必要时进行保护性拷贝

第40条:谨慎设计方法签名

第41条:慎用重载

第42条:慎用可变参数

第43条:返回零长度的数组或者集合,而不是null

第44条:为所有导出的API元素编写文档注释

第八章 通用程序设计

通用二字可以看出,这个章节时介绍编程的一些基本的建议,很可能会设计编程的各个方面,搞不好连编码的规范,变量的命名规则都会被包含进去。会对Java里面的变量,循环,对象等都会做一个建议。搞不好这些建议还可能会适用于其他的编程语言。

第45条:将局部变量的作用域最小化

第46条:for-each循环优先于传统的for循环

第47条:了解和使用类库

第48条:如果需要精确的答案,请避免使用float和double

第49条:基本类型优先于装箱基本类型

第50条:如果其他类型更合适,则尽量避免使用字符串

第51条:当心字符串连接的性能

第52条:通过接口引用对象

第53条:接口优先于反射机制

第54条:谨慎地使用本地方法

第55条:谨慎地进行优化

第56条:遵守普遍接受的命名惯例

第九章 异常

说一句大话,万物运行皆会有异常,异常的处理非常的重要。能够预测到的异常,本质上并不是异常,因为我们可以控制这种异常,这时的异常也是一种场景而已。Java里面的异常机制有什么特别的呢?有什么需要注意的呢?怎么使用会更有效率呢,更加可读呢?

第57条:只针对异常的情况才使用异常

第58条:对可恢复的情况使用受检异常,对编程错误使用运行时异常

第59条:避免不必要地使用受检异常

第60条:优先使用标准的异常

第61条:抛出与抽象相对应的异常

第62条:每个方法抛出的异常都要有文档

第63条:在细节消息中包含能捕获失败的信息

第64条:努力使失败保持原子性

第65条:不要忽略异常

第十章 并发

并发是一个非常重要的特性,就是这个特性可以使Java支持多线程的工作,这是可以提高程序执行效率的非常重要的特性。那么Java里面的并发有没有使用的重灾区呢,开发人员使用并发的时候有没有需要特别注意的呢,怎么提高并发的使用效率呢?

第66条:同步访问共享的可变数据

第67条:避免过度同步

第68条:executor和task优先于线程

第69条:并发工具优先于wait和notify

第70条:线程安全性的文档化

第71条:慎用延迟初始化

第72条:不要依赖于线程调度器

第73条:避免使用线程组

第十一章 序列化

第74条:谨慎地实现Serializable接口

第75条:考虑使用自定义的序列化形式

第76条:保护性地编写readObject方法

第77条:对于实例控制,枚举类型优先于readResolve

第78条:考虑用序列化代理代替序列化实例

猜你喜欢

转载自blog.csdn.net/qisibajie/article/details/70555569