ケアレスミスを無くす章
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 でないことを確認する必要がなくなりますね。
『まとめ』
リテラルの比較方法を工夫することで簡潔なコードを記述できます。
コーディング規約などの縛りがないのであれば適用してみると良いでしょう。
-
IS 559680 / ISO27001
認証範囲 本社、芝大門オフィス情報セキュリティ基本方針 -
個人情報保護方針
個人情報の取扱いについて
保有個人データ又は
第三者提供記録に関する
事項の周知について
特定個人情報の取扱いについて -
FS 671851 / ISO9001
認証範囲 本社、芝大門オフィス品質方針