Effective Java开篇-规约清单

来源:互联网 发布:手机淘宝口令红包 编辑:程序博客网 时间:2024/06/06 18:42

此书中的很多规约是需要用心去体会的,在此做一个开篇,后续会有针对每条规约中的要点总结的文章,待更~

创建和销毁对象1. 考虑用静态工厂方法代替构造器2. 遇到多个构造器参数时要考虑用构建器3. 用私有构造器或者枚举类型强化Singleton属性4. 通过私有构造器强化不可实例化的能力5. 避免创建不必要的对象6. 消除过期的对象引用7. 避免使用终结方法对于所有对象都通用的方法8. 覆盖equals时请遵守通用约定9. 覆盖equals时总要覆盖hashCode10. 始终要覆盖toString11. 谨慎地覆盖clone12. 考虑实现Comparable接口类和接口13. 使类和成员的可访问性最小化14. 在公有类中使用访问方法而非公有域15. 使可变性最小化16. 复合优先于继承17. 要么为继承而设计,并提供文档说明,要么就禁止继承18. 接口优于抽象类19. 接口只用于定义类型20. 类层次优于标签类21. 用函数对象表示策略22. 优先考虑静态成员类泛型23. 请不要在新代码中使用原生态类型24. 消除非受检警告25. 列表优先于数组26. 优先考虑泛型27. 优先考虑泛型方法28. 利用有限制通配符来提升API的灵活性29. 优先考虑类型安全的异构容器枚举和注解30. 用enum代替int常量31. 用实例域代替序数32. 用EnumSet代替域33. 用EnumMap代替序数索引34. 用接口模拟可伸缩的枚举35. 注解优于命名模式36. 坚持使用Override注解37. 用标记接口定义类型方法38. 检查参数的有效性39. 必要时进行保护性拷贝40. 谨慎设计方法签名41. 慎用重载42. 慎用可变参数43. 返回零长度的数组或者集合,而不是null44. 为所有导出的API元素编写文档注释通用程序设计45. 将局部变量的作用域最小化46. For-each循环优于传统的for循环47. 了解和使用类库48. 如果需要精确的答案,请避免使用float和double49. 基本类型优先于装箱基本类型50. 如果其他类型更适合,则尽量避免使用字符串类型51. 当心字符串连接的性能52. 通过接口引用对象53. 接口优先于反射机制54. 谨慎地使用本地方法55. 谨慎地进行优化56. 遵守普遍接受的命名惯例异常57. 只针对异常的情况才使用异常58. 对可恢复的情况使用受检异常,对编程错误使用运行时异常59. 避免不必要地使用受检的异常60. 优先使用标准的异常61. 抛出与抽象相对应的异常62. 每个方法抛出的异常都要有文档63. 有细节消息中包含能捕获失败的消息64. 努力使失败保持原子性65. 不要忽略异常并发66. 同步访问共享的可变数据67. 避免过度同步68. executor和task优先于线程69. 并发工具优先于wait和notify70. 线程安全性的文档化71. 慎用 延迟初始化72. 不要依赖于线程调度器73. 避免使用线程组序列化74. 谨慎地实现Serializable接口75. 考虑使用自定义的序列化形式76. 保护性地编写readObject方法77. 对于实例控制,枚举类型优先于readResolve78. 考虑使用序列化代理代替序列化实例