Java講座

ケアレスミスを減らす章
1.5. リテラルの比較
『目的』

リテラルの比較方法を工夫してミスを防ぎましょう。

『Before』

リテラルを右辺として比較しています。
public boolean isHello(String str) {
    return (str != null && str.equals("Hello"));
}
このようなコードを良く見かけませんか?
strが"Hello"と等しいか確認する前にstrがnullでないことを確認しなければなりません。
さもなければstrがnullだとequals()の処理でNullPointerException例外が発生してしまいます。

※リテラル
 定数値のこと。
 プログラム上に直接書かれた数値や文字列を指します。
 通常は、どこかに static final な変数としておくことが一般的です。
private static final String HELLO = "Hello";

『After』

では、リテラルを左辺として比較した場合はどうなるでしょう。
public boolean isHello(String str) {
    return "Hello".equals(str);
}
これだと str が null だったとしても equals() の処理は正しく行われます。
つまり str が null でないことを確認する必要がなくなりますね。

『まとめ』

リテラルの比較方法を工夫することで簡潔なコードを記述できます。
コーディング規約などの縛りがないのであれば適用してみると良いでしょう。
前のページ   次のページ

当ページ・当社へのご意見やご感想があればお手数ですが「お問い合わせ」までお願いいたします。
当社への就職をお考えの方は「採用情報ページ」までお願いいたします。
C言語を学びたい方は「C言語講座」もどうぞ。