8.不要使用不推荐的API 尽量使用JDK1.3推荐的API。在类和方法或者java组件里有很多方法是陈旧的或者是可以选择的。有一些方法SUN用了"deprecated“标记。最好不要使用例如: private List t_list = new List (); t_list.addItem (str);
9.为所有序列化的类创建一个‘serialVersionUID‘ 可以避免从你各种不同的类破坏序列的兼容性。如果你不特别制订一个UID的话,那么系统为自动产生一个UID(根据类的内容)。如果UID在你新版本的类中改变了,即使那个被序列化的类没改变,你也不能反序列化老的版本了。 public class DUID implements java.io.Serializable { public void method () { } }
在里面加一个UID,当这个类的序列化形式改变的时候,你也改变这个UID就可以了。 public class DUIDFixed implements java.io.Serializable { public void method () { } private static final long serialVersionUID = 1; }
参考:Joshua Bloch: "Effective Java - Programming Language Guide" Addison Wesley, 2001, pp. 223
10.对于private常量的定义 比较好的做法是对于这样的常量,加上final标记,这样的常量从初始化到最后结束值都不会改变。 private int size = 5;
改变后的做法是: private final int size = 5;
11.避免把方法本地变量和参数定义成和类变量相同的名字。 这样容易引起混扰,建议把任何的变量字都定义成唯一的。这样看来,SCJP里的那些题目在现实中就用不到了: public void method (int j) { final int i = 5; // VIOLATION } private int j = 2;
建议: public void method (int j1) { final int i = 5; // VIOLATION } private int j = 2;