来自《Effective Java》的57条程序设计建议
本文由发表于5年前 | J2EE | 暂无评论 |  被围观 5,405 views+
创建和销毁对象1、考虑用静态工厂方法代替构造函数2、使用私有构造函数强化singleton3、通过私有构造函数强化不可实例化的能力4、避免创建重复的对象5、消除过期的对象引用6、避免使用终结函数对于所有对象都通用的方法7、在改写equals的时候请遵循通用约定8、改写equals时总是要改写hashCode9、总是要改写toString10、谨慎地改写clone11、考虑实现Comparable接口类和接口12、使类和成员的可访问能力最小化13、支持非可变性14、复合优先于继承15、要么专门为继承而设计,并给出文档说明,要么禁止继承16、接口优于抽象类17、接口只是被用于定义类型18、优先考虑静态成员类C语言结构的替代19、用类代替结构20、用类层次来代替联合21、用类来代替enum结构22、用类和接口来代替函数指针方法23、检查参数的有效性24、需要时使用保护性拷贝25、谨慎设计方法的原型26、谨慎的使用重载27、返回零长度的数组而不是null28、为所有导出的API元素编写文档注释通用程序设计29、将局部变量的作用域最小化30、了解和使用库31、如果要求精确的答案,请避免使用float和double32、如果其他类型更适合,则尽量避免使用字符串33、了解字符串连接的性能34、通过接口引用对象35、接口优先于映像机制36、谨慎地使用本地方法37、谨慎地进行优化38、遵守普遍接受的命名惯例异常39、只针对不正常的条件才使用异常40、对于可恢复的条件使用被检查的异常,对于程序错误使用运行时异常41、避免不必要地使用被检查的异常42、尽量使用标准的异常43、抛出的异常要适合于相应的抽象44、每个方法抛出的异常都要有文档45、在细节消息中包含失败 - 捕获信息46、努力使失败保持原子性47、不要忽略异常线程48、对共享可变数据的同步访问49、避免过多的同步50、永远不要在循环的外面调用wait51、不要依赖于线程调度器52、线程安全性的文档化53、避免使用线程组序列化54、谨慎地实现Serializable55、考虑使用自定义的序列化形式56、保护性地编写readObject方法57、必要时提供一个readResolve方法

每一条都是在编程经验中总结的,即使看完了Effective Java这本书,也不能说明完全懂了,列出了这些建议,看看自己每次看到这些建议时,有没有更加深刻的体会。

创建和销毁对象
1、考虑用静态工厂方法代替构造函数
2、使用私有构造函数强化singleton
3、通过私有构造函数强化不可实例化的能力
4、避免创建重复的对象
5、消除过期的对象引用
6、避免使用终结函数
对于所有对象都通用的方法
7、在改写equals的时候请遵循通用约定
8、改写equals时总是要改写hashCode
9、总是要改写toString
10、谨慎地改写clone
11、考虑实现Comparable接口
类和接口
12、使类和成员的可访问能力最小化
13、支持非可变性
14、复合优先于继承
15、要么专门为继承而设计,并给出文档说明,要么禁止继承
16、接口优于抽象类
17、接口只是被用于定义类型
18、优先考虑静态成员类
C语言结构的替代
19、用类代替结构
20、用类层次来代替联合
21、用类来代替enum结构
22、用类和接口来代替函数指针
方法
23、检查参数的有效性
24、需要时使用保护性拷贝
25、谨慎设计方法的原型
26、谨慎的使用重载
27、返回零长度的数组而不是null
28、为所有导出的API元素编写文档注释
通用程序设计
29、将局部变量的作用域最小化
30、了解和使用库
31、如果要求精确的答案,请避免使用float和double
32、如果其他类型更适合,则尽量避免使用字符串
33、了解字符串连接的性能
34、通过接口引用对象
35、接口优先于映像机制
36、谨慎地使用本地方法
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方法
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/57-program-design-recommendations-from-effective-java.html
关键字: , ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2012 9/24
如果您有更好的原创技术博文或者观点,欢迎投稿:admin@itzhai.com,或者关注订阅左侧浮动面板的微信号订阅IT宅itread)发送消息。
文章评论
    没有评论
给我留言

有人回复时邮件通知我
J2EE的相关文章
随机文章 本月热门 热评
1 jQuery中使用Ajax实现文本输入框的自动完成功能 2011/5/14
2 IT宅书籍推荐:Javascript Web Applications 2012/6/12
3 The Knowledge About Protected Mode Must Be Master During Learning The Operating System 2011/5/10
4 使用Eclipse开发Java Web过程中Debug调试的使用方法 2011/9/10
5 Hibernate的xerces-2.6.2.jar文件冲突引发的Unable to load configuration错误及其解决方法 2011/5/23
6 Spring与Struts2整合的两种解决方案 2011/5/23
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.