Effective Java 3rd Edition翻译

本文全面介绍了Java编程的各种最佳实践,包括对象的创建与销毁、通用方法的使用、类与接口的设计、泛型与枚举的应用、lambda表达式及Stream API的高效使用、方法设计、通用程序设计原则、异常处理、并发编程以及序列化策略。每部分都提供了具体的指导原则,旨在帮助开发者编写更高质量的Java代码。

未完待续。。。。

文章目录

前言

序言

鸣谢

1,简介

2,创建和销毁对象

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

2 面对多个构造参数时,考虑用构建器

3 使用私有构造或枚举类型强制单例属性

4 使用私有构造强制不可实例化

5 使用依赖注入代替硬链接资源

6 避免创建不需要的对象

7 清除过期的对象引用

8 避免使用Finalizer和Cleaner机制

9 使用 try-with-resources 取代 try-finally

3,对所有对象通用的方法

10 重写equals方法要遵守通用约定

11 重写equals应同时重写hashCode方法

12 始终重写toString方法

13 慎重重写clone方法

14 考虑实现Comparable接口

4,类和接口

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

16 在公开的类中,使用访问方法的方式,而不是公共字段

17 是可变性最小化

18 优先使用组合而非继承

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

20 接口优先于抽象类

21 为后代设计接口

22 接口仅用于定义类型

23 类层次优于标签类

24 优先考虑静态成员类

25 限制源文件为单个顶级类

5,泛型

26 不要使用原生类型

27 消除非检查警告

28 list优于arrays

29 优先使用泛型

30 优先使用泛型方法

31 利用有限通配符提高API灵活性

32 慎重的组合使用泛型和可变参数

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

6,枚举和注解

Java支持两种特殊的引用类型:一种称为枚举类,另一种称为注解类。这个章节讨论了使用这些引用类型的最佳实践

34 使用枚举代替整形常量

35 使用实例属性替代序数

36 使用EnumSet替代位属性

37 使用EunmMap替代序数索引

38 使用接口模拟可扩展枚举

39 注解优于命名模式

40 始终使用Override注解

41 使用标记接口去定义类型

7,Lambdas 和 Streams

在java8中,新增的函数式接口,lambdas和方法引用是用于创建函数对象。Streams API 跟随这个些语言修改一同添加,为数据元素处理提供类库支持。在这个章节,我们将讨论如何充分使用这些功能。

42 lambdas表达式优先于匿名类

43 方法引用优先于lambdas表达式

44 坚持使用标准的函数式接口

45 慎重使用Streams 流

46 优先使用Streams流中无副作用的函数

47 优先使用集合作为Streams流的返回类型

48 谨慎使用并行流

8,方法

这个章节讨论了方法设计的几个方面:若何处理参数和返回值,如何设计方法签名,如何写方法文档。本章大部分内容适用于构造函数以及方法。类似第4章,本章专注于方法的可用性,健壮性和灵活性。

49 检查参数的合法性

50 必要时进行防御性拷贝

51 谨慎设计方法签名

52 慎重使用方法重载

53 慎重使用可变参数

54 返回空集合或数组,而不是null

55 慎重返回选项

56 为所有的公开API元素编写文档注解

9,通用程序设计

这一章讨论文章的具体细节。论述了局部变量,控制结构,类库,数据类型,以及语言之外的:反射和本地方法。最后,还论述了优化和命名的惯例

57 最小化局部变量的范围

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

59 知晓并使用类库

60 如果需要精确的答案,应避免float 和 double

61 基本数据类型优于包装类

62 若使用其他类型更合适,就应避免使用String类

63 注意字符串拼接性能

64 通过接口引用对象

65 接口优于反射

66 慎重使用本地方法

67 慎重优化

68 遵守公认的命名惯例

10,异常

69 仅在异常情况下使用exceptions

70 对可恢复的情况使用受检异常,对程序异常使用运行时异常

71 如无不必要,不使用受检异常

72 推荐使用标准异常

73 抛出与抽象对应的异常

74 为每个方法抛出的异常写文档

75 异常捕获要包含详细的异常信息

76 争取失败的原子性

77 不要忽略异常

11,并发

线程允许多个活动同时进行。并发程序设计比单线程程序设计困难,因为很多事情将会出错,失败,而且很难重现。你无法避免并发。他是平台固有的特性,同时也是从多核处理器获得好性能的普遍必要的手段。这一章节包含的的建议是帮助你写出干净的,正确的,有好的说明的并发程序。

12,序列化

这一章节关注点是对象序列化,序列化是Java把对象编译为字节流(序列化)和通过编译的字节流重建对象(反序列化)的模板。一个对象一旦被序列化后,就可以从一个虚拟机发送到另一个虚拟机,或者存储在磁盘中用于反序列化。本章重点关注序列化的危险和如何使其最小化。

未完待续。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值