条款1:异常对性能的影响表现在两个方面:一方面是异常的创建、捕获和处理都需要较高的代价,另一方面即使异常没有发生,包含异常处理的代码仍然需要较多的时间。
条款3:用ERROR的子类来表示系统级的异常和程序不必要处理的异常。Java中有三种典型的异常:error,exception,runtimeexception
条款6:用链式异常来保存原始异常信息
条款7:将类的属性按种类分块;将方法的实现代码按功能分块
条款10:控制代码的长度
条款12:尽量少用同名的类
条款14:为内存分配做好准备
堆:对象都是在堆中创建的;
栈:各种原始数据类型的局部变量都是在栈中创建的
从静态存储区域分配:内存在程序编译时就分配好了,例如static
java垃圾收集器:分代复制,标记,增量
条款15:用StringBuffer代替迭代使用String
条款18: 用接口代替抽象类
条款20:正确地使用集成表示分类关系(继承标识is-a关系,把继承作为一种分类来看待)
条款21:用组合表示包含关系(1,组成对象对成分对象有依赖性2,成分对象的唯一性,即同一成分对象只能属于一个组成对象3,组成通常是异构的)
条款22:避免方法的副作用(类的行为被分为两种:动作和查询,动作用来修改对象的状态(修改类的域),查询用来得到对象的状态(域的值),可以把对象看作状态机。避免方法副作用的途径:1,分离动作和查询方法2,设计不可变类)final类指类的实现不能够修改,类的状态是可以变化的,final不对并行做任何承诺,不可变类的实现应当的线程安全的
对大系统的关键部分可以尝试画类图等细粒度的设计图来优化设计
条款25:Java集合库最核心的功能由两个集合库的核心接口实现-Collection接口和Map接口,Map.Entry是对键值对(key value pair)的抽象
条款26:使用不可变类作为Set的元素和Map的key
条款28:谨慎的使用集合的clone()方法--浅复制or深复制