minimize

Optimization

最適化に関するルールセットです。

LocalVariableCouldBeFinal

1回しか代入されないローカル変数がfinalとして宣言されていない箇所を検出します。

public void bar() {
  String s = "s";
  // その後、sへの代入処理が存在しない場合、sはfinalとして宣言すべき
}

MethodArgumentCouldBeFinal

代入されないメソッドパラメータがfinalとして宣言されていない箇所を検出します。

public void bar(int count) {
  // メソッド内でcountへの代入処理が存在しない場合、countはfinalとして宣言すべき
}

AvoidInstantiatingObjectsInLoops

ループ内でオブジェクトを生成している箇所を検出します。

UseArrayListInsteadOfVector

Vector を使用している箇所を検出します。
代わりに ArrayList を使用しましょう。
ReplaceVectorWithList と同じです。

SimplifyStartsWith

String.startsWith メソッドの引数に一文字を渡している箇所を検索します。

if (x.startsWith("x")) {
  // これは、if (x != null && x.charAt(0) == 'x') とした方がコストが安い
}

UseStringBufferForStringAppends

文字列の連結に += 演算子を使っている箇所を検出します。

String a = "abc";
...
a += "def"; // 文字列の連結には StringBuffer(Builder) を使用した方が良い

UseArraysAsList

配列をリストに変換するのに Arrays.asList を使用していない箇所を検出します。

List l = new ArrayList();
for (int i = 0; i < ints.length; i++) {
  l.add(ints[i]);
}
// List l = Arrays.asList(ints); を使った方がシンプルで高速

AvoidArrayLoops

配列から配列へコピーするのに System.arrayCopy を使用していない箇所を検出します。

for (int i = 0; i < 10; i++) {
 b[i] = a[i];
}
// System.arrayCopy() を使った方がシンプルで高速

UnnecessaryWrapperObjectCreation

不必要なラッパーオブジェクトの使用を検出します。

i = Integer.valueOf(s).intValue(); // これは下のように書き直せる
i = Integer.parseInt(s); // こちらの方が良い

AddEmptyString

空文字に追加しているロジックを検出します。

String s = "" + 123; // こういうのはホント止めて下さい…
String t = Integer.toString(456); // OK!
[コメント(0)]