この記事の目的
完全に自分用です。
Javaで実装したプログラムのコードレビューで指摘されたことがあるポイントをまとめて、定期的に見返すことで再指摘されないように気を付ける!(新たな指摘があるごとに増やすかも)
String.equalsメソッドで比較するとき
定数と比較する場合は定数に対してequalsメソッドを実行するようにする。
定数の中身は明示されていると思うので、ヌルポで落ちるなどが減る。
定数.equals(変数)
単純に文字列結合をする
単純に文字列結合をする場合はStringBufferではなく、StringBuilderを使用する。
↓の記事が参考になる
https://qiita.com/gksdyd88/items/d3873600829337bebedd
区切り文字で文字列を結合する
以下のいずれかかを使用することで実現可能。
目的や環境によりどれかを使用するかは考える。
- StringJoiner ※Java8から使用可
- String.join() ※Java8から使用可
- StringUtils.join() ※Apache Commons Langライブラリが必要
Listの宣言①
右辺の型は宣言不要です。
ここを削ることで多少なりとも調査時のGREPで無駄にヒットする箇所が減少することが見込める。
List<String> hoge= new ArrayList<>();
Listの宣言②
リスト宣言時にコンストラクタで容量を指定する。
addする際に要素数がcapacityを超えるとcapacityを1.5倍してバッファの割り当てが行われるため、予め要素数がわかっている場合は容量の指定を行う。
List<String> hoge = new ArrayList<>(fuga.size());
https://docs.oracle.com/javase/jp/8/docs/api/java/util/ArrayList.html
フォーマッタやcheckstyleを適用する
見出し通り。意外と忘れがち。
マジックナンバーを作っていないか?
コード中にマジックナンバーを作ってしまうと他の人が見たときや自分自身で見返した際にも「この数字 is 何?」となるので定数化を行う。
↓こんなコードは書かない。
hogeLogic.getFuga(id, 10);
javadocコメントを書く
以下にはjavadocコメントを書くようにする。
特にメソッドと定数は何をする(表す)かがフォーカスするだけでわかるようになるの非常に便利。
- クラス
- メソッド
- 定数