Empty

概要

コード中に内容のないブロック等が存在しない際に獲得できる実績です. プログラムの流れに影響しないこれらの要素を削除することによって,コード行数が削減でき,可読性が上がります.

タイトル
Empty sack cannot stand upright

この実績には,以下の8つのルールが含まれます:

  • EmptyCatchBlock
  • EmptyFinallyBlock
  • EmptyIfStmt
  • EmptyStatementBlock
  • EmptyStatementNotInLoop
  • EmptySwitchStatements
  • EmptyTryBlock
  • EmptyWhileStmt

EmptyCatchBlock

空の catch ブロックを記述すると例外を捕まえることはできますが,それに対する処理が適切に行われません. 例外処理を適切に行うために,空の empty ブロックを記述することは避けましょう.

コード例

public void doSomething() {
  try {
      FileInputStream fis = new FileInputStream("/tmp/bugger");
  } catch (IOException ioe) {
      // !!! 適切な例外処理を行いましょう
  }
}

このルールのチェックには,PMDの EmptyCatchBlock を用いています.

EmptyFinallyBlock

空の finally ブロックを記述することは避けましょう.

コード例

public class Foo {
  public void bar() {
      try {
          int x=2;
      } finally {
          // !!! 空の finally ブロックです.
      }
  }
}

このルールのチェックには,PMDの EmptyFinallyBlock を用いています.

EmptyIfStmt

空の if 文を記述することは避けましょう.

コード例

public class Foo {
  void bar(int x) {
    if (x == 0) {
      // !!! 空の if 文です.
    }
  }
}

このルールのチェックには,PMDの EmptyIfStmt を用いています.

EmptyStatementBlock

空の宣言ブロックを記述することは避けましょう.

コード例

public class Foo {
  private int _bar;

  public void setBar(int bar) {
    { _bar = bar; } // この使い方は適切です
    {}              // !!! 必要ありません
  }
}

このルールのチェックには,PMDの EmptyStatementBlock を用いています.

EmptyStatementNotInLoop

for ループや while ループの条件文以外で使われている空の宣言文(セミコロン(;)だけ)は必要ありません. セミコロンが2つ連なっているものも取り除きましょう.

コード例

public void foo() {
  // !!! 必要のないセミコロンです
  ;
  // !!! 文の末尾にセミコロンは2つ以上必要ありません
  System.out.println("look at the extra semicolon");;
}

このルールのチェックには,PMDの EmptyStatementNotInLoop を用いています.

EmptySwitchStatements

空の switch ブロックを記述することは避けましょう.

コード例

public void bar() {
  int x = 2;
  switch (x) {
      // !!! 空の switch ブロックです.
  }
}

このルールのチェックには,PMDの EmptySwitchStatements を用いています.

EmptyTryBlock

空の empty ブロックを記述することは避けましょう.

コード例

public class Foo {
  public void bar() {
    try {
       // !!! 空の try ブロックです.
    } catch (Exception e) {
       e.printStackTrace();
    }
  }
}

このルールのチェックには,PMDの EmptyTryBlock を用いています.

EmptyWhileStmt

空の while 文を記述することは避けましょう.

コード例

void bar(int a, int b) {
  while (a == b) {
      // !!! 空の while 文です.
  }
}

このルールのチェックには,PMDの EmptyWhileStmt を用いています.

ちなみに

処理を一定時間中断するための無限ループ(Timing loop)を記述したい場合は, Thread.sleep() を使うのが適切です.