1.优先使用基本类型而不是装箱基本类型,当心无意识的自动装箱;
2.重写equals()时,总要重写hashCode();
3.始终要重写toString();
4.尽可能的使每个类或者成员不被外界访问;
6.复合优于集成
7.Builder模式
8.避免创建不必要的对象
9.请不要再代码中使用原生态类型
10.尽可能消除非受检异常
11.列表优于数组
12.优先考虑泛型和泛型方法
13.优先考虑类型安全的异构容器
public class Favorites{
private Map<Class<?>,Object> favorites = new HashMap<Class<?>,Object>();
public <T> void putFavorites(Class<T> type,T instance){
favorites.put(type,instance);
}
public <T> T getFavorites(Class<T> type){
return type.cast(favorites.get(type));
}
}
14.用enum代替int常量
15.坚持使用@Override
16.检查参数有效性
17.必要时进行保护性拷贝
18.避免过长的参数列表(尽量少于4个)
19.慎用可变参数
20.返回零长度的数组或集合,而不是Null
21.将局部变量的作用域最小化
22.for each循环优于传统for循环
23.如果需要精度计算,请避免使用float和double,使用BigDecimal,int或long进行计算
24.当心字符串的连接性能,应使用SringBuilder
25.通用接口引用对象
26.对可恢复的情况使用受检异常,对编程错误使用运行时异常
27.优先使用标准异常
28.抛出与抽象相对应的异常:更高层的实现应该捕获底层的异常,同时抛出可以按照高层抽象进行解释的异常(异常转移)
29.不要忽略异常
20.谨慎实现对象序列化
2.重写equals()时,总要重写hashCode();
3.始终要重写toString();
4.尽可能的使每个类或者成员不被外界访问;
6.复合优于集成
7.Builder模式
8.避免创建不必要的对象
9.请不要再代码中使用原生态类型
10.尽可能消除非受检异常
11.列表优于数组
12.优先考虑泛型和泛型方法
13.优先考虑类型安全的异构容器
public class Favorites{
private Map<Class<?>,Object> favorites = new HashMap<Class<?>,Object>();
public <T> void putFavorites(Class<T> type,T instance){
favorites.put(type,instance);
}
public <T> T getFavorites(Class<T> type){
return type.cast(favorites.get(type));
}
}
14.用enum代替int常量
15.坚持使用@Override
16.检查参数有效性
17.必要时进行保护性拷贝
18.避免过长的参数列表(尽量少于4个)
19.慎用可变参数
20.返回零长度的数组或集合,而不是Null
21.将局部变量的作用域最小化
22.for each循环优于传统for循环
23.如果需要精度计算,请避免使用float和double,使用BigDecimal,int或long进行计算
24.当心字符串的连接性能,应使用SringBuilder
25.通用接口引用对象
26.对可恢复的情况使用受检异常,对编程错误使用运行时异常
27.优先使用标准异常
28.抛出与抽象相对应的异常:更高层的实现应该捕获底层的异常,同时抛出可以按照高层抽象进行解释的异常(异常转移)
29.不要忽略异常
20.谨慎实现对象序列化