[Effective Java] Note: - Chapter-7-3: Add Documentation Comment for each API
使用JavaDoc。为每个公有导出API: 类,接口,构造器,方法,域。都编写文档。
[Effective Java] Note: - Chapter-7-2: Keep the Method Safe
首先,每个方法一开始就最好检查参数的有效性。第二,必要时要进行保护性拷贝,以保证对象的状态不被改变。第三,宁愿返回空数组或者集合也不要返回null。
[Effective Java] Note: - Chapter-7-1: Design Method Signatures Carefully
方法签名主要指的是,方法的名称,参数和返回值。虽然返回值的类型不足以用来区别两个方法。主要有以下几点:首先,方法名要风格保持统一。其次,参数控制在4个以内。然后,要控制接口的方法数量。关于方法的参数,尽量使用接口,而不是类。最后记住在用可变长参数的时候,小心基本型。而且尽量不要重载参数数量相同的方法。
[Effective Java] Note: - Chapter-5-1: Generics
读这本书关键在于看到Joshua Bloch是怎么理解泛型的。第一个关键点在于泛型是在做减法,不是做加法。泛型并不是来泛化代码类型的。恰恰相反,泛型是用来在编译期提供类型约束的。实际上最无约束的泛化类型是使用Object。比如ArrayList里什么元素都可以放,但从此他们几乎不受任何类型检查的约束。ArrayList实际上是在说,编译期会检查并确保列表里的元素是字符串。第二个关键点是:有限制通配符,无限制通配符是在做加法,而不是做减法。当我们认为普通泛型精确的类型匹配太严格的时候,可以用有限或者无限通配符适当放宽条件。这里的标准是:PECS - Producer Extends, Consumer Super。第三个关键点,我认为是泛型方法。它最大的特点是可以帮我们做类型推导,但也有...
[Effective Java] Note: - Chapter-4-4:Static Inner Class First
静态成员类比非静态成员类好。非静态成员类适合提供外围类的另外一个视图。匿名内部类适合动态地创建只用一次的“函数对象”。
[Effective Java] Note: - Chapter-4-3: Define the Type and Behavior with Interface
接口可以模拟多继承,优于抽象类的单继承。但抽象类可以提供部分实现,所以“接口 + 骨架实现”的模式就结合了两者的有点。可以定义一个只定义了行为的类模拟“函数指针”和“策略模式”。但不要定义一个没有定义行为,只有静态常量的常量接口。常量接口不是一个良好实践。
[Effective Java] Note: - Chapter-4-2: Composition is better than Inheritance
记住,让每个类都尽可能的自私。让每个类的成员都只为这个类工作。让每个类只为所在包工作。只在有明确理由的情况下,才提升某些类或成员的可访问等级。最后谨慎选择API。因为一旦公开你的API,就很难再改,它必须永远得到支持。
[Effective Java] Note: - Chapter-4-1: Minimize the accessibility of classes and their members
记住,让每个类都尽可能的自私。让每个类的成员都只为这个类工作。让每个类只为所在包工作。只在有明确理由的情况下,才提升某些类或成员的可访问等级。最后谨慎选择API。因为一旦公开你的API,就很难再改,它必须永远得到支持。
共计 48 篇文章,6 页。