Effective Java(3rd)-Items链接合集

  • item1 使用静态工厂方法代替构造方法
  • item2 当构造方法有很多参数的时候考虑使用建造者模式
  • item3 强制私有构造方法或枚举类型拥有单例属性
  • item4 强制私有构造方法非实例化
  • item5 尽量使用依赖注入代替硬编码
  • item6 避免创建没有必要的对象
  • item7 消除过时的对象引用
  • item8 避免使用finalizers和cleaners
  • item9 try-with-resources比try-finally更好
  • item10 当重载equals方法时遵守普遍契约
  • item11 重写equals时始终重写hashCode
  • item12 始终覆写toString
  • item13 明智地覆写clone
  • item14 考虑实现Comparable
  • item15 最大限度减少类和成员的访问性
  • item16 public类中使用访问方法而不是用public字段
  • item17 最小化可变性
  • item18 组合优于继承
  • item19 如果要继承,就要设计和写文档,否则禁止继承
  • item20 使用接口而不是抽象类
  • item21 为后代设计接口
  • item22 接口仅用来定义类型
  • item23 类层次优于tagged class
  • item24 相较非静态,更多使用静态成员
  • item25 将源文件限制为单个顶级类
  • item26 不要使用原始类型
  • item27 消除未经检查的警告
  • item28 推荐使用列表而不是数组
  • item29 优先使用泛型
  • item30 优先使用泛型方法
  • item31 使用有界通配符提高API的灵活性
  • item32 明智地结合泛型和可变参数
  • item33 考虑类型安全的异构容器
  • item34 使用枚举而不是常量int
  • item35 使用实例字段而不是顺序号
  • item36 使用EnumSet代替位字段
  • item37 使用EnumMap而不是序号索引
  • item38 用接口模拟可扩展的枚举
  • item39 注解比命名模式更好
  • item40 始终使用Override注解
  • item41 使用标记接口定义类型
  • item42 相比匿名类,更倾向使用lambda
  • item43 相比lambda,更倾向使用方法引用
  • item44 支持使用标准功能接口
  • item45 谨慎使用stream
  • item46 在流中使用无副作用的函数
  • item47 使用集合而不是流作为返回类型
  • item48 在使流并行时要小心
  • item49 检查参数的有效性
  • item50 在需要的时候制作防御性的副本
  • item51 仔细设计方法签名
  • item52 谨慎使用重载
  • item53 谨慎使用可变参数
  • item54 返回空集合或数组,而不是null
  • item55 谨慎返回Optional
  • item56 为所有公开的API元素编写doc注释
  • item57 最小化局部变量的范围
  • item58 与传统的for循环相比,更喜欢for-each循环
  • item59 知道并使用库
  • item60 如果需要确切的答案,避免使用float和double
  • item61 原始类型优于装箱类型
  • item62 避免使用其他类型更合适的字符串
  • item63 注意字符串连接的性能
  • item64 通过对象的接口引用对象
  • item65 更喜欢接口而不是反射
  • item66 谨慎使用native方法
  • item67 谨慎优化
  • item68 遵守普遍接受的命名约定
  • item69 仅在异常条件下使用异常
  • item70 对可恢复条件使用已检查异常,对编程错误使用运行时异常
  • item71 避免不必要地使用检查异常
  • item72 最好使用标准异常
  • item73 抛出适合于抽象的异常
  • item74 记录每个方法抛出的所有异常
  • item75 在详细消息中包含故障捕获信息
  • item76 尽量维持失败的原子性
  • item77 不要忽略异常
  • item78 同步对共享可变数据的访问
  • item79 避免过度同步
  • item80 与线程相比,更喜欢执行器、任务和流
  • item81 使用并发实用程序来等待和通知
  • item82 文档线程安全
  • item83 明智地使用延迟初始化
  • item84 不要依赖于线程调度程序
  • item85 更喜欢Java序列化的替代品
  • item86 非常谨慎地实现Serializable
  • item87 考虑使用自定义序列化表单
  • item88 防御性地编写readObject方法
  • item89 对于实例的控制,宁可使用枚举类型也不愿使用readResolve
  • item90 考虑序列化代理而不是序列化实例

你可能感兴趣的:(Effective Java(3rd)-Items链接合集)