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));
        }