考虑用静态工厂方法代替构造器
遇到多个构造器参数时要考虑用构建器
用私有构造器或者枚举类型强化Singleton属性
通过私有构造器强化不可实例化的能力
避免创建不必要的对象
消除过期对象的引用
避免使用终结方法 finalizer
对于所有对象都通用的方法
覆盖equals时请遵守通用约定
覆盖equals时总要覆盖hashCode
始终要覆盖toString
谨慎地覆盖clone
考虑实现Comparable接口
类和接口
使类和成员的可访问性最小化
在公有类中使用访问方法而非公有域
使可变性最小化
复合优先于继承
要么为继承而设置,并提供文档的说明,要么就禁止继承
接口优于抽象类
接口只用于定义类型
类层次优于标签类
用函数对象表示策略
优先考虑静态成员类
请不要在新代码中使用原生态类型
消除非受检警告
列表优先于数组
优先考虑泛型
优先考虑泛型方法
利用有限制的通配符来提升API的灵活性
优先考虑类型安全的异构容器
用enum代替int常量
用实例域代替序数
用enumSet代替位域
用enumMap代替序数索引
用接口模拟可以伸缩的枚举
注解优先于命名模式
坚持使用Override注解
用标记接口定义类型
检查参数的有效性
必要时进行保护性拷贝
谨慎实际方法签名
慎用重载
慎用可变参数
返回零长度数组或者集合,而不是null
为所有导出的API元素编写文档注释
将局部变量的作用于最小化
For-each 循环优先于传统的for循环
了解和使用类库
如果需要精确的答案,请避免使用float和double
基本类型优先于装箱的基本类型
如果其他类型的更适合,则尽量避免使用字符串
当心字符串连接的性能
通过接口引用对象
接口优先于反射机制
谨慎地使用本地方法
谨慎地使用优化
遵守普遍接受的命名惯例
只针对异常的情况才使用异常
对可恢复的情况使用受检异常,对编程错误使用运行时异常
避免不必要的使用受检的异常
优先使用标准的异常
抛出与抽象相对应的异常
每个方法抛出的异常都要有文档
在细节消息中包含能捕获失败的信息
努力使失败保持原子性
不要忽略异常
同步访问共享的可变数据
避免过度同步
Executor和task优先于线程
并发工具优先于wait和notify
线程安全性的文档化
慎用延迟初始化
不要依赖于线程调度器
避免使用线程组
谨慎地实现Serializable接口
考虑使用自定义的序列化形式
保护性地编写redaObject
对于实例控制,,枚举类型优先于readResolve
考虑用序列化代理代替序列化实例!
如何做到写出高效的Java代码?
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 获得类的实例:1.提供一个公有的构造函数;2.提供一个公有的静态工厂方法,该方法只是一个返回类的实例的静态方法。 ...
- 尽管Object是一个具体类,但是设计它主要是为了扩展。它所有的非final方法(equals、hashCode、...