《Effective Java》目录摘抄。
我知道这看起来很糟糕。当下,自己缺少实际操作,只能暂时摘抄下目录。随着,实践的增多,慢慢填充更多的示例。

Chapter 2 Creating and Destroying Objects

  • Consider static factory methods instead of constructors
  • Consider a builder when faced with many constructor parameters
  • Enforce the singleton property with a private constructor or an enum type
  • Avoid creating unnecessary objects
  • Eliminate obsolete object references
  • Avoid finalizers

Chapter 3 Methods Common to All Objects

  • Obey the general contract when overriding equals
  • Always override hashCode when you override equals
  • Always override toString
  • Override clone judiciously
  • Consider implementing Comparable

Chapter 4 Classes and Interfaces

  • Minimize the accessibility of classes and members
  • In public classes, use accessor methods, not public fields
  • Minimize mutability
  • Favor composition over inheritance
  • Design and document for inheritance or else prohibit it
  • Prefer interfaces to abstract classes
  • Use interfaces only to define types
  • Prefer class hierarchies to tagged classes
  • Use function objects to represent strategies
  • Favor static member classes over nonstatic

Chapter 5 Generics

  • Don't use raw types in new code
  • Eliminate unchecked warnings
  • Prefer lists to arrays
  • Favor generic types
  • Favor generic methods
  • Use bounded wildcards to increase API flexibility
  • Consider typesafe heterogeneous containers

Chapter 6 Enums and Annotations

  • Use enums instead of int costants
  • Use instance fields instead of ordinals
  • Use EnumSet instead of bit fields
  • Use EnumMap instead of ordinal indexing
  • Emulate extensible enums with interfaces
  • Prefer annotations to naming patterns
  • Consistently use the Override annotation
  • Use marker interfaces to define types

Chapter 7 Methods

  • Check parameters for validity
  • Make defensive copies when needed
  • Design method signatures carefully
  • Use overloading judiciously
  • Use varargs judiciously
  • Return empty arrays or collections, not nulls
  • Write doc comments for all exposed API elements

Chapter 8 General Programming

  • Minimize the scope of local variables
  • Prefer for-each loops to traditional for loops
  • Know and use the libraries
  • Avoid float and double if exact answers are required
  • Prefer primitive types to boxed primitives
  • Avoid strings where other types are more appropriate
  • Beware the performance of string concatenation
  • Refer to objects by their interfaces
  • Prefer interfaces to reflection
  • Use native methods judiciously
  • Optimize judiciously
  • Adhere to generally accepted naming conventions

Chapter 9 Exceptions

  • Use exceptions only for exceptional conditions
  • Use checked exceptions for recoverable conditions and runtime exceptions for programming errors
  • Avoid unnecessary use of checked exceptions
  • Favor the use of standard exceptions
  • Throw exceptions appropriate to the abstraction
  • Document all exceptions thrown by each method
  • Include failure-capture information in detail messages
  • Strive for failure atomicity
  • Don't ignore exceptions

Chapter 10 Concurrency

  • Synchronized access to shared mutable data
  • Avoid excessive synchronization
  • Prefer executors and tasks to threads
  • Prefer concurrency utilities to wait and notify
  • Document thread safety
  • Use lazy initialization judiciously
  • Don't depend on the thread scheduler
  • Avoid thread groups

Chapter 11 Serialization

  • Implement Serializable judiciously
  • Consider using a custom serialized form
  • Write readObject methods defensively
  • For instance control, prefer enum types to readResolve
  • Consider serialization proxies instead of serialized instances

Effective Java 目录的更多相关文章

  1. Effective Java目录

    创建和销毁对象 考虑用静态工厂方法代替构造器 遇到多个构造器参数时要考虑用构建器 用私有构造器或者枚举类型强化Singleton属性 通过私有构造器强化不可实例化能力 避免创建不必要的对象 消除过期的 ...

  2. Effective Java 第三版笔记(目录)

    <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时 ...

  3. effective java —— 终结方法守卫者

    目录: effective java —— 终结方法守卫者 effective java 第2章:创建和销毁对象.第7条 : 避免使用终结方法.最后的“终结方法守卫者 (finalizer guard ...

  4. 《Effective Java(中文第二版)》【PDF】下载

    <Effective Java(中文第二版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382186 Java(中文第二版)& ...

  5. Effective Java - 构造器私有、枚举和单例

    目录 饿汉式单例 静态常量 静态代码块 懒汉式单例 尝试加锁 同步代码块 双重检查 静态内部类单例 枚举单例 Singleton 是指仅仅被实例化一次的类.Singleton代表了无状态的对象像是方法 ...

  6. Java 高效编程(Effective Java)中文第三版(补档)

    来源:sjsdfg/effective-java-3rd-chinese <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过, ...

  7. Effective java笔记(二),所有对象的通用方法

    Object类的所有非final方法(equals.hashCode.toString.clone.finalize)都要遵守通用约定(general contract),否则其它依赖于这些约定的类( ...

  8. 《Effective java》-----读书笔记

    2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己!预计在2016年要看12本书,主要涉及java基础.Spring研究.java并 ...

  9. 《Effective Java》学习笔记——积累和激励

    从一个实际案例说起 国庆长假前一个礼拜,老大给我分配了这么一个bug,就是打印出来的报表数量为整数的,有的带小数位,有的不带,毫无规律. 根据短短的两个多月的工作经验以及猜测,最终把范围缩小到以下这段 ...

随机推荐

  1. COM组件没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))

    1.解决办法:在项目属性里设置“生成”=>“目标平台”为x86而不是默认的ANY CPU:

  2. ISD9160学习笔记02_搭建NuMicro开发环境

    开发环境这边没什么好说的,烧写玩了玩录音的测试程序. 1. 烧写工具 昨晚先尝试了下烧写工具(NuMicro ICP Programming Tool 1.30.6491.exe),板子自带了烧写器, ...

  3. java web当中表单提交到后台出现乱码的解决方法

    1.如果提交方式为post,想不乱码,只需要在服务器端设置request对象的编码即可,客户端以哪种编码提交的,服务器端的request对象就以对应的编码接收,比如客户端是以UTF-8编码提交的,那么 ...

  4. Hadoop计算平均值【转】

    file1.txt a 1b 2a 3b 3a 5b 7c 3c 5 file2.txt a 1b 7c 5a 1c 3 结果: a 2.2b 4.75c 4.0 代码: package org.ap ...

  5. 解决3 字节的 UTF-8 序列的字节 3 无效

    maven项目编译正常,运行时候报以下错误: 3 字节的 UTF-8 序列的字节 3 无效 仔细看这个错误的详细信息,会发现是某个xml文件中字符识别的问题,解决办法如下: 在pom.xml中添加以下 ...

  6. iOS - 布局NSLayoutConstraint动画的实现

    抛出问题:为何在用到用到constraint的动画时以下代码无法实现动画的功能 ,没有动画直接刷新UI跳到80 - (void)touchesBegan:(NSSet<UITouch *> ...

  7. hive报错: Specified key was too long; max key length is 767 bytes

    废话不多说,报错如下: DataNucleus.Datastore (Log4JLogger.java:error(115)) - An exception was thrown while addi ...

  8. Use Reentrant Functions for Safer Signal Handling(译:使用可重入函数进行更安全的信号处理)

    Use Reentrant Functions for Safer Signal Handling 使用可重入函数进行更安全的信号处理 How and when to employ reentranc ...

  9. 【python问题】UnicodeEncodeError: 'ascii' codec can't encode characters in position 306-309: ordinal not in range(128)

    今天在写python爬虫的时候,遇到一个问题 UnicodeEncodeError: 'ascii' codec can't encode characters in position 306-309 ...

  10. 【python3】 django2.0 在生成数据库表时报错: TypeError: __init__() missing 1 required positional argument: 'on_delete'

    python: 3.6.4 django: 2.0 models.py 代码如下 # coding: utf-8 from django.db import models from django.co ...