Effective Java(第三版)目录

news2025/4/13 5:11:30

        本书的目标是帮助读者更加有效地使用Java编程语言及其基本类库java.lang、java.util和java.io,以及子包java.util.concurrent和java.util.function等。本书也会时不时地讨论到其他的类库。
        本书一共包含90个条目,每个条目讨论一条规则。这些规则反映了最有经验的优秀程序员在实践中常用的一些有益的做法。全书以一种比较松散的方式将这些条目组织成12章,每一章都涉及软件设计的一个主要方面。因此,并不一定需要按部就班地从头到尾阅读本书,因为每个条目都有一定程度的独立性。这些条目相互之间经常交叉引用,因此可以很容易地在书中找到自己需要的内容。

第1章 引言

第2章 创建和销毁对象

第1条:用静态工厂方法代替构造器
第2条:遇到多个构造器参数时要考虑使用构建器
第3条:用私有构造器或者枚举类型强化Singleton
第4条:通过私有构造器强化不可实例化的能力
第5条:优先考虑依赖注入来引用资源
第6条:避免创建不必要的对象
第7条:消除过期的对象引用
第8条:避免使用终结方法和清除方法
第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条:列表优于数组
第29条:优先考虑泛型
第30条:优先考虑泛型方法
第31条:利用有限制通配符来提升API的灵活性
第32条:谨慎并用泛型和可变参数
第33条:优先考虑类型安全的异构容器

第6章枚举和注解

第34条:用enum代替int常量
第35条:用实例域代替序数
第36条:用EnumSet代替位域
第37条:用EnumMap代替序数索引
第38条:用接口模拟可扩展的枚举
第39条:注解优先于命名模式
第40条:坚持使用Override注解
第41条:用标记接口定义类型

第7章 Lambda和Stream

第42条:Lambda优先于匿名类
第43条:方法引用优先于Lambda
第44条:坚持使用标准的函数接口
第45条:谨慎使用Stream
第46条:优先选择Stream中无副作用的函数
第47条:Stream要优先用Collection作为返回类型
第48条:谨慎使用Stream并行

第8章方法

第49条:检查参数的有效性
第50条:必要时进行保护性拷贝
第51条:谨悄设计方法签名
第52条:慎用重载
第53条:慎用可变参数
第54条:返回零长度的数组或者集合,而不是null
第55条:谨慎返回optinal
第56条:为所有导出的API元素编写文档注释

第9章 通用编程

第57条:将局部变量的作用域最小化
第58条:for-each循环优先于传统的for循环
第59条:了解和使用类库
第60条:如果需要精确的答案,请避免使用float和double
第61条:基本类型优先于装箱基本类型
第62条:如果其他类型更适合,则尽量避免使用字符串
第63条:了解字符串连接的性能
第64条:通过接口引用对象
第65条:接口优先于反射机制
第66条:谨慎地使用本地方法
第67条:谨慎地进行优化
第68条:遵守普遍接受的命名惯例

第10章 异常

第69条:只针对异常的情况才使用异常
第70条:对可恢复的情况使用受检异常,对编程错误使用运行时异常
第71条:避免不必要地使用受检异常
第72条:优先使用标准的异常
第73条:抛出与抽象对应的异常
第74条:每个方法抛出的所有异常都要建立文档
第75条:在细节消息中包含失败捕获信息
第76条:努力使失败保持原子性
第77条:不要忽略异常

第11章 并发

第78条:同步访问共享的可变数据
第79条:避免过度同步
第80条:executor、task和stream优先于线程
第81条:并发工具优先于wait和notify
第82条:线程安全性的文档化
第83条:慎用延迟初始化
第84条:不要依赖于线程调度器

第12章 序列化

第85条:其他方法优先于Java序列化
第86条:谨慎地实现Serializable接口
第87条:考虑使用自定义的序列化形式
第88条:保护性地编写readObject方法
第89条:对于实例控制,枚举类型优先于readResolve
第90条:考虑用序列化代理代替序列化实例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/742264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

驱动 day8 作业

1.在内核模块中启用定时器&#xff0c;定时1s,让led1 一秒亮、一秒灭 2.基于gpio子系统完成LED灯驱动的注册&#xff0c;应用程序测试 1.mychrdev_timer.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/io…

Qt DAY5 Qt制作简易网络聊天室

服务器 widget.h文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QTcpSocket> #include <QVector>//向量&#xff0c;函数类模板 #include <QMessageBox>namespace Ui { class Widget; }class Wid…

STM32+FreeRTOS 使用SystemView监控系统

前言 本文以STM32F407ZET6 FreeRTOS V9.0作为演示&#xff0c;其它的Cortex M芯片同样可以参考此文&#xff0c;其他内核和RTOS理论上也支持&#xff0c;本文暂时不做研究。 所以开始阅读本文前&#xff0c;需要一块能运行FreeRTOS的Cortex M芯片&#xff0c;如果没有移植好…

发一下接口自动化测试框架(python3+requests+excel)

Git&#xff1a; https://github.com/lilinyu861/Interface-Test 环境配置&#xff1a; 开发工具&#xff1a;pycharm2018Excel 开发框架&#xff1a;python3requestsexcel 接口自动化测试框架介绍&#xff1a; 此接口测试框架&#xff0c;首先由用户设计原始的测试用例并为…

webpack笔记二

文章目录 背景拆分环境清除上次构建产物插件&#xff1a;clean-webpack-plugin合并配置文件插件&#xff1a;webpack-merge实时更新和预览效果&#xff1a;webpack-dev-server babel配置参考 背景 webpack笔记一 在前面的学习&#xff0c;完成了webpack的基本配置&#xff0c…

C++教程——const修饰指针、结构体、文件操作

const修饰指针 常量指针 指针常量 const既修饰指针&#xff0c;又修饰常量 指针与数组 结构体 通过指针访问结构体变量中的数据 结构体中const使用场景 文件操作 写文件 读文件 读取数据的方式 二进制读写文件 写文件 读文件

master、origin master和origin/master

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

线程任务分支合并框架

1、原理 2、实用类 &#xff08;1&#xff09; ForkJoinPool 分支合并池 类比> 线程池 &#xff08;2&#xff09; ForkJoinTask ForkJoinTask 类比> FutureTask &#xff08;3&#xff09; RecursiveTask 递归任务&#xff1a;继承后可以实现递归(自己调自己)调用…

从小白到大神之路之学习运维第57天--------shell脚本实例应用3.0--以及————结合“三贱客”之“grep”的相关用法

第三阶段基础 时 间&#xff1a;2023年7月11日 参加人&#xff1a;全班人员 内 容&#xff1a; shell实例 目录 一、循环的基本使用 while随机循环 二、case控制服务的基本应用 1、case的语法格式 2、使用case写脚本&#xff0c;以以下实验为主 例1&#xff1a;控…

vue + Luckysheet 实现在线Excel表格操作

需求千千万&#xff0c;又是难熬的一天&#xff01; 效果图&#xff1a; Luckysheet官网网站&#xff1a;快速上手 | Luckysheet文档 1、引入&#xff08;两种&#xff09; 第一种CDN引入 在项目中的 public ---> index.html 中添加代码&#xff0c;如下&#xff1a; &…

91.qt qml-圆角毛玻璃 高斯模糊

qml中使用毛玻璃,可以通过两个类型GaussianBlur或者FastBlur使用,效果如下所示: 接下来先来介绍FastBlur和GaussianBlur 1.FastBlur介绍 FastBlur提供比GaussianBlur更低的模糊质量,但渲染速度更快。FastBlur效果通过使用源内容缩小和双线性滤波的算法模糊源内容来软化源内…

【免费送书活动第一期】赠送实体图书《深入浅出Java虚拟机》JVM原理与实战

赠送实体图书四本&#xff08;免费赠送&#xff09; 《深入浅出JAVA虚拟机&#xff1a;JVM原理与实战》 内容简介&#xff1a; 本书主要以 Java 虚拟机的基本特性及运行原理为中心&#xff0c;深入浅出地分析 JVM 的组成结构和底层实现&#xff0c;介绍了很多性能调优的方案和…

idea编译时遇到的bug

1、 D:\workspace\spark\src\main\Scala\WordCount.scala:3:8 WordCount is already defined as object WordCount object WordCount { 解决参考博客&#xff1a;Error:(21, 8) FlumePushWordCount is already defined as object FlumePushWordCount object FlumePushWor_WSQ(…

Switch超频图文说明

Switch超频图文说明 有些游戏&#xff0c;官方锁频导致游戏卡顿&#xff0c;可以通过超频提升游戏体验。抽空研究了下&#xff0c;发现超频可以在大气层 Atmosphere 和 SX OS系统中使用。 正巧最近有同学询问&#xff0c;就整理个教程好了。 Switch超频图文说明 按自己的破解系…

14-Vue插槽(slot),制作可复用组件

什么是 slot ? Vue 将 <slot>元素作为承载分发内容的出口。插槽内可以包含任何模板代码&#xff0c;包括 HTML或其它组件。 在某些组件的模板中&#xff0c;有一部分区域需要父组件来指定 <!-- message组件&#xff1a;一个弹窗消息 --> <div class"mes…

【工具】浏览器自带下载加速功能

&#x1f41a;作者简介&#xff1a;花神庙码农&#xff08;专注于Linux、WLAN、TCP/IP、Python等技术方向&#xff09;&#x1f433;博客主页&#xff1a;花神庙码农 &#xff0c;地址&#xff1a;https://blog.csdn.net/qxhgd&#x1f310;系列专栏&#xff1a;善假于物&#…

srt转rtmp(mpegts -> flv)

一、使用ffmpeg拉流srt转rtmp推流过程中遇到音视频问题 1、音频 虽然从mpegts到flv都是AAC格式&#xff0c;但是mpegts多了ADTS头&#xff0c;在flvenc的时候会报错误&#xff1a; Malformed AAC bitstream detected: use the audio bitstream filter aac_adtstoasc to fix it…

JAVA克隆

更多精彩 先案例后讲解&#xff0c;这里是代码教父&#xff0c;今天讲解JAVA中的clone 目录 什么是clone如何实现clone 浅克隆深克隆小结 什么时候使用cloneclone 相关类库的实现分析 什么是clone 在Java中&#xff0c;克隆&#xff08;Clone&#xff09;指的是创建一个现有对…

linux命令与shell编程

文章目录 一、概念linux内存嵌入式嵌入式层次图判断小端和大端 二、linux系统操作命令ls查看cd 命令pwd命令touch 创建文件mkdir 创建目录chmod 修改权限man命令cp 拷贝mv 移动rm命令cat命令echo 命令tty命令->查看当前终端号clear 命令ldd命令 ->查看文件依赖哪些库prin…

make makefile

文章目录 make是一个命令makefile or Makefile是一个当前目录下的文件使用&#xff1a;生成可执行文件清理 作用依赖关系依赖方法make会自动推导makefile中的依赖关系栈式结构为什么清理的时候要make 加上clean?make后面可以直接跟要生成的可执行文件,指定名称的依赖关系和依赖…