本书介绍了在Java编程中57条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。通过对Java平台设计专家所使用的技术的全面描述,揭示了应该做什么,不应该做什么才能产生清晰、健壮的高效的代码。
本书中的每条规则都以简短、独立的小文章形式出现,这些小文章包含了详细而精确的建议,以及对语言中许多细微之处的深入分析,并通过例子代码加以进一步说明。贯穿全书的是通用的语言用法的设计模式,以及一些具有启发意义的技巧的技术。
......(更多)
Joshua Bloch是Sun公司的高级工程师,也是“Java平台核心组”的设计师。他设计并实现了获奖的Java Collections Framework和java.math软件包,并且对Java平台的其他部分也做出了贡献。Joshua是许多技术文章和论文的作者,他的关于抽象数据对象复制的博士论文获得过“ACM杰出博士论文奖”提名。他拥有哥伦比亚大学的学士学位和卡耐基-梅隆大学的博士学位。
潘爱民 浙江海宁人,现任职于北京大学计算机科学技术研究所,副研究员;研究方向为信息安全(包括网络安全和公钥技术)和软件开发(包括组件技术和模式);主要著作有《COM原理与应用》等,译著有《Visual C++技术内幕》(第4版)、《COM本质论》和《C++ Primer中文版》等。
......(更多)
译者序
序
前言
第一章 引言
第二章 创建和销毁对象
第1条:考虑用静态工厂方法代替构造函数
第2条:使用私有构造函数强化singleton属性
第3条:通过私有构造函数强化不可实例化属性
第4条:避免创建重复的对象
条5条:消除对期的对象引用
第6条:避免使用终结函数
第三章 对于所有对象都通用的方法
第四章 类和接口
第五章 C语言结构的替代
第六章 方法
第七章 通用程序设计
第八章 异常
第九章 线程
第十章 序列化
中英文术语对照
参考文献
模式和习惯用法索引
索引
......(更多)
例如,构造器 BigInteger(int, int, Random)会返回一个为可能素数(probable prime)的 BigInteger, 但如果用一个名为 BigInteger.probablePrime 的静态工厂方法来表示,效果会更好。
如果类具有从客户端得到或返回到客户端的可变组件。类就必须保护性的拷贝这些组件。如果拷贝的成本受到限制,并且信任他的客户端不会不恰当的修改组件,就可以在文档中指明客户端的职责是不得修改受到影响的组件,以此来代替保护性拷贝
大多数程序员都不需要这个方法(指枚举的ordinal方法),他是设计成用于像EnumSet和EnumMap这种基于枚举的通用数据结构的,除非你在编写的是这类数据结构,否则最好完全避免使用ordinal方法。
It is critical to check the validity of constructor parameters to prevent the construction of an object that violates its class invariants.
do not use the clone method to make a defensive copy of a parameter whose type is subclassable by untrusted parties.
......(更多)