美文网首页大数据Java
阿里内部学习指南《Effective Java中文 第3版》程序

阿里内部学习指南《Effective Java中文 第3版》程序

作者: 用嘴写代码 | 来源:发表于2020-06-18 15:32 被阅读0次

Java从1997年诞生到日趋完善,经过了20多年不断的发展壮大,已经拥有了近千万开发人员。如何编写出更清晰、更正确、更健壮且更易于重用的代码,是大家所追求的目标。

经典Jolt获奖作品《Effective Java》的第3版这本书,对上一版内容进行了彻底的更新,介绍了如何充分利用从泛型到枚举、从注解到自动装箱的各种特性,帮助读者更加有效地使用Java编程语言及其基本类库: java.lang. java.util和java.io,以及子包,如java.util. concurrent和java.util.function等。

本书的作者Joshua .Bloch曾经是Sun公司的杰出工程师和Google公司的首席Java架构师,带领团队设计和实现过无数的Java平台特性,在本书中,他为我们带来了90条程序员必备的经验法则:针对你每天都会遇到的编程问题提出了最有效、最实用的解决方案

对于Java 平台精妙之处的独到见解,并提供优秀的代码范例。通过阅读贯穿全书的透彻的技术剖析与完整的示例代码,认真理解并加以实践,必定会从中受益匪浅。书中介绍的示例代码清晰易懂,也可以作为日常工作的参考指南

本书分为12章共90个条目,涵盖了Java 5.0/6.0/ 7.0/ 8.0/ 9.0的种种技术要点。

小编免费把这本书分享给大家,需要这本书来学习的朋友,请帮忙转发,关注小编,私信“Java”就能得到这本书的免费领取方式了

第1章 引言

第2章 阐述何时以及如何创建对象,何时以及如何避免创建对象,如何确保它们能够适时地销毁,以及如何管理对象销毁之前必须进行的各种清除动作。

用静态工厂方法代替构造器

遇到多个构造器参数时要考虑使用构建器

用私有构造器或者枚举类型

强化Singleton属性

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

优先考虑依赖注人来引用资源

避免创建不必要的对象

消除过期的对象引用

避免使用终结方法和清除方法

ty-with-resource优先于try-finally

第3章 阐述对于所有对象都通用的方法,你会从中获知对equals, hashCode, toString,clone、finalize 以及Comparable .compareTo方法相当深入的分析,从而避免今后在这些问题上再次犯错。

覆盖equals时请遵守通用约定

覆盖equals时总要覆盖hashCode

始终要覆盖toString

谨慎地覆盖clone

考虑实现Comparable接口

第4章 阐述作为Java程序设计语言的核心以及Java语言的基本抽象单元(类和接口)在使用上的一些指导原则,帮助你更好地利用这些元素,设计出更加有用、健壮和灵活的类与接口。

使类和成员的可访问性最小化

要在公有类而非公有域中使用访问方法

使可变性最小化

复合优先于继承

要么设计继承并提供文档说明,要么禁止继承

接口优于抽象类

为后代设计接口

接口只用于定义类型

类层次优于标签类

静态成员类优于非静态成员类

限制源文件为单个顶级类

第5章和第6章中 分别阐述在Java1.5发行版本中新增加的泛型(Generic)以及枚举( Enum)和注解( Annotation)的最佳实践,教你如何最大限度地享有这些优势,并使整个过程尽可能地简单化。

请不要使用原生态类型

消除非受检的警告

列表优于数组

优先考虑泛型

优先考虑泛型方法

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

谨慎并用泛型和可变参数

优先考虑类型安全的异构容器

用enum代替int常量

用实例域代替序数

用EnumSet代替位域

用EnumMap代替序数索引

用接口模拟可扩展的枚举

注解优先于命名模式

坚持使用Override注解

用标记接口定义类型

第7章 专门讨论在Java 8中新增的函数接口( Functional Interface). Lambda 表达式和方法引用( Method Reference),使创建函数对象( Function Object)变得更加容易。接着探讨为处理数据元素的序列提供了类库级别支持的Stream API,以及如何最佳地利用这些机制。

Lambda优先于匿名类

方法引用优先于Lambda

坚持使用标准的函数接口

谨慎使用Stream

优先选择Stream中无副作用的函数

Stream要优先用Collection作为返回类型

谨慎使用Stream并行

需要的朋友请帮忙转发,关注小编,私信“Java”,就能得到本文档的免费领取方式了哦

第8章 讨论方法设计的几个方面:如何处理参数和返回值,如何设计方法签名,如何为方法编写文档,从而使方法设计在可用性、健壮性和灵活性上有进一步的提升。

检查参数的有效性

必要时进行保护性拷贝

谨慎设计方法签名

慎用重载

慎用可变参数

返回零长度的数组或者集合而不是null

谨慎返回optinal

为所有导出的API元素

编写文档注释

第9章 主要讨论Java语言的具体细节,讨论了局部变量的处理、控制结构、类库的使用、各种数据类型的用法,以及两种不是由语言本身提供的机制(Reflection和NativeMethod,反射机制和本地方法)的用法,并讨论了优化和命名惯例。

将局部变量的作用域最小化

for-each循环优先于传统的for循环

了解和使用类库

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

基本类型优先于装箱基本类型

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

了解字符串连接的性能

通过接口引用对象

接口优先于反射机制

谨慎地使用本地方法

谨慎地进行优化

遵守普遍接受的命名惯例

第10章 阐述如何充分发挥异常的优点来提高程序的可读性、可靠性和可维护性,以及减少异常使用不当所带来的负面影响,并提供了一些关于有效使用异常的指导原则。

只针对异常的情况才使用异常

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

避免不必要地使用受检异常

优先使用标准的异常

抛出与抽象对应的异常

每个方法抛出的所有异常都要建立文档

在细节消息中包含失败捕获信息

努力使失败保持原子性

不要忽略异常

第11章 阐述如何帮助你编写出清晰、正确、文档组织良好的并发程序,比如如何避免过度同步,优先采用Executor Framework.并发集合(ConcurrentCollection)、同步器(Synch-ronizer),以及是否需要依赖于线程调度器等。

同步访问共享的可变数据

避免过度同步

executor、task 和stream优先于线程

并发工具优先于wait和线程安全性的文档化

慎用延迟初始化

不要依赖于线程调度器

第12章 阐述序列化方面的技术,并且有一项值得特别提及的特性,就是序列化代理( Serialization Proxy)模式,它可以帮助你避免对象序列化的许多缺陷。

其他方法优先于Java序列化

谨慎地实现Serializable接口

考虑使用自定义的序列化形式

保护性地编写readObject方法

对于实例控制,枚举类型优先于readResolve

考虑用序列化代理代替序列化实例

由于篇幅限制,小编只能在这里给大家展示文章目录及部分内容,以避免影响大家的阅读体验

获取方式

需要的朋友请帮忙转发,关注小编,私信“Java”,就能得到本文档的免费领取方式了哦

最后,希望大家都可以进大厂

相关文章

网友评论

    本文标题:阿里内部学习指南《Effective Java中文 第3版》程序

    本文链接:https://www.haomeiwen.com/subject/hmuuxktx.html