Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

effective java 78条编程准则 #30

Open
diaosichengxuyuan opened this issue Mar 6, 2019 · 0 comments
Open

effective java 78条编程准则 #30

diaosichengxuyuan opened this issue Mar 6, 2019 · 0 comments

Comments

@diaosichengxuyuan
Copy link
Owner

第一条:考虑使用静态工厂替代构造器
第二条:遇到多个构造器参数时要考虑使用构建器
第三条:用私有构造器或者枚举类型强化Singleton属性
第四条:通过私有构造器强化不可实例化的能力
第五条:避免创建不必要的对象
第六条:消除过期对象的引用
第七条:避免使用终结方法(finalize)
第八条:覆盖equals时请遵守通用约定
第九条:覆盖equals时总要覆盖hashCode
第十条:始终要覆盖toString
第十一条:谨慎的覆盖clone
第十二条:考虑实现Comparable接口
第十三条:使类和成员的可访问性最小
第十四条:在公有类中使用访问方法而非公有域
第十五条:使可变性最小化
第十六条:复合优先于继承
第十七条:要么为继承而设计,并提供文档说明,要么就禁止继承
第十八条:接口优于抽象类
第十九条:接口只用于定义类型
第二十条:类层次优于标签类
第二十一条:用函数对象表示策略
第二十二条:优先考虑静态成员类
第二十三条:请不要在新代码中使用原生态类型
第二十四条:消除非受检警告
第二十五条:列表优先于数组
第二十六条:优先考虑泛型
第二十七条:优先考虑泛型方法
第二十八条:利用有限制通配符来提升API的灵活性
第二十九条:优先考虑类型安全的异构容器
第三十条:使用enum代替int常量
第三十一条:用实例域代替序数
第三十二条:用EnumSet代替位域
第三十三条:用EnumMap代替序数索引
第三十四条:用接口模拟可伸缩的枚举
第三十五条:注解优先于命名模式
第三十六条:坚持使用Override注解
第三十七条:用标记接口定义类型
第三十八条:检查参数的有效性
第三十九条:必要时进行保护性拷贝
第四十条:谨慎设计方法签名
第四十一条:慎用重载
第四十二条:慎用可变参数
第四十三条:返回零长度的数组或者集合,而不是null
第四十四条:为所有导出的API元素编写文档注释
第四十五条:将局部变量的作用域最小化
第四十六条:for-each循环优先于传统的for循环
第四十七条:了解和使用类库
第四十八条:如果需要精确的答案,请避免使用float和double
第四十九条:基本类型优先于装箱基本类型
第五十条:如果其他类型更适合,则尽量避免使用字符串
第五十一条:当心字符串连接的性能
第五十二条:通过接口引用对象
第五十三条:接口优先于反射机制
第五十四条:谨慎地使用本地方法
第五十五条:谨慎地进行优化
第五十六条:遵守普遍接受的命名惯例
第五十七条:只针对异常的情况才使用异常
第五十八条:对可恢复的情况使用受检异常,对编程错误使用运行时异常
第五十九条:避免不必要地使用受检的异常
第六十条:优先使用标准的异常
第六十一条:抛出与抽象相对应的异常
第六十二条:每个方法抛出的异常都要有文档
第六十三条:在细节消息中包含能捕获失败的信息
第六十四条:努力使失败保持原子性
第六十五条:不要忽略异常
第六十六条:同步访问共享的可变数据
第六十七条:避免过度同步
第六十八条:executor和task优先于线程
第六十九条:并发工具优先于wait和notify
第七十条:线程安全性的文档化
第七十一条:慎用延迟初始化
第七十二条:不要依赖于线程调度器
第七十三条:避免使用线程组
第七十四条:谨慎地实现Serializable接口
第七十五条:考虑使用自定义的序列化形式
第七十六条:保护性地编写readObject方法
第七十七条:对于实例控制,枚举类型优先于readResolve
第七十八条:考虑用序列化代理代替序列化实例

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant