Fork me on GitHub

Effective Java学习手册

Effective Java读书笔记

  1. 用静态工厂方法代替构造函数
    优点

    1. 静态方法具有名字
    2. 静态方法被调用事不要求非得创建一个新的对象
    3. 返回一个原返回类型的子类型的对象
  2. 使用私有构造函数强化Singleton属性

  3. 通过私有构造函数强化不可实列化的能力

  4. 避免创建重复的对象

  5. 消除过期的对象引用

  6. 避免使用终结函数

  7. 改写equals的时候请遵守通用约定

  8. 改写equals事要改写hashCode

  9. 总是改写toString

  10. 谨慎地改写clone

  11. 考虑实现Comparable接口

  12. 使类和成员的可访问能力最小化

    1. private 私有的
    2. default 包级私有
    3. protected 受保护的
    4. public 公有的
  13. 支持非可变性

  14. 复合优先于继承

  15. 要么为继承而设计并给出文档说明,要么禁止继承

  16. 接口优于抽象类

  17. 接口只是被用于定义类型

  18. 优先考虑静态成员类

  19. 用类代替结构

  20. 用类层次来代替联合

  21. 用类来代替enum结构

  22. 用类和接口代替函数指针

  23. 检查参数的有效性

  24. 需要时使用保护性拷贝

  25. 谨慎设计方法的原型

  26. 谨慎地使用重载

  27. 返回零长度的数组而不是null

  28. 为导出的API元素编写文档注释

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

  30. 了解和使用库

  31. 要求精确的答案,避免使用float和double

    1. 使用BigDecimal,int long
  32. 其他累心更合适,避免使用字符串

  33. 字符串的连接性能

  34. 通过接口引用对象

  35. 接口优先于反射机制

  36. 谨慎地使用本地方法(JNI)

  37. 谨慎地进行优化

  38. 只针对不正常的条件才使用异常

  39. 遵守普遍的命名惯例

  40. 对于可恢复的条件使用被检查的异常,对于程序错误使用运行时异常

  41. 避免不必要地使用检查的异常

  42. 尽量使用标准的异常

  43. 抛出的异常更适合于相应的抽象

  44. 每个方法抛出的异常都要有文档

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

  46. 努力使失败保持原子性

  47. 不要忽略异常

  48. 对共享可变数据的同步访问

  49. 避免过多同步

  50. 永远不要在循环的外面调用wait

  51. 不要依赖于线程调度器

  52. 线程安全性的文档化

  53. 避免使用线程组

  54. 谨慎地实现Serializable

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

  56. 保护性地编写readObject方法

  57. 必要时提供一个readResolve方法

posted @ 2021-06-17 21:17  KevinAt2022  阅读(103)  评论(0)    收藏  举报