Effective Javaノート
1979 ワード
1.ローカル変数は使用時に初期化し、初期化しないでください.2.Stringを使って文字列をつなぎ合わせないでください.SteringBuiderを使って、Stering Builderのサイズを設定したほうがいいです.
StringBuilder strAppen=new StringBuilder(message.getContent().length());
3.精度の高い方法で計算すれば、double、floatは不要です.int,long,BigDecimal**4.サイクルの優先順位foreach>foreach>>while:*5を使用して、プライベートな構造方法で作成できないオブジェクトの作成を防ぐべきです.6.final修飾配列を使用しなくても、意味がない7.一部のグローバルパラメータがprvateの場合、get/setというアクセス方法で8にアクセスします.クラスにfinalを追加すると、修正できないと保証します.9.可変でないクラスを作成します.final修飾類、方法、変数を使用します.クライアントの参照を操作しません.これらの状態は変わらないので、可変オブジェクトはスレッドが安全です.例えばBig Integer.// 。
public Complex subtract(Complex com){
int a=com.getA();
int b=com.getB();
c=a-b;
return new Complex(a,b,c);
}
10.引用対象のタイプは、できるだけインターフェース1を使用します.クラスがインターフェースを継承した場合、その種類を使用する際にインターフェースが備えられていない方法は使わず、インターフェースを引用タイプとして優先的に使用するほうが、より柔軟です.List list=new ArrayList();
// list vector,
List list=new Vector();
list.add(obj);
11.方法パラメータの合法性をチェックするastertは、一つの方法を構築する時、どのような方法が判断されるべきかを考慮するべきです.断言して方法パラメータの合法性をチェックします.条件は必ず本物だと断言します.private static sort(long[] a){
assert a!=null;
assert a.size()>0
}
12.for異常な捕獲はサイクルに入れ子してはいけません.try{
for(int i:list){
///
}
}
**12.ゼロの長さの行列を返します. public List showKeyName(List container) {
if (container.size() == 0 || container == null) {
return Collections.emptyList();
} else {
return Collections.list((Enumeration) container);
}
}
13.より包括的なエラー情報の取り込み throw outOfBounds(to, this.fromBound, toBoundToCheck);
private IllegalArgumentException outOfBounds(Object value, Bound fromBound, Bound toBound) {
return new IllegalArgumentException(value + " not in range "
+ fromBound.leftCap(from) + ".." + toBound.rightCap(to));
}