はじめに
より良いコードを書くことは、プログラミングスキルを次のレベルに引き上げるために不可欠です!
この記事では、特にJavaの初心者の方に向けて、日々のコーディングで意識できる「読みやすいコード」のチェックポイントをまとめました^^
コードを見返したときに以下のチェック項目を満たしていれば、いいコードといえるのではないでしょうか!
気を付けたい項目
- 命名
- コメントとドキュメンテーション
- 制御フロー
- クラスとメソッド
以上の項目に関してGoodとBadを比較しながらチェックしていきましょう!
命名
1. 意図が明確な名前を使おう!
変数やメソッドの名前を見ただけで、その役割がわかるようにしましょう!
int d;
→何を表すか不明
int daysSinceCreation;
→作成日からの経過日数だと一目でわかる
2. 単数形と複数形を使い分けよう!
複数の要素を扱うときは複数形を使い、読む人が混乱しないようにします。
List<Product> product = getProducts();
→リストなのに単数形
List<Product> products = getProducts();
→複数のProductのリストだと明確
コメントとドキュメンテーション
1. なぜそのコードを書いたかを伝えよう!
コード自体で説明できないなぜをコメントで補足しましょう。
// 価格に100を足す
→コードを見ればわかる
// 消費税計算のため
→なぜこの計算が必要なのか、意図がわかる
2. メソッドのXMLコメント(JavaDoc)を書こう!
XMLコメントでメソッドの役割、引数、戻り値について、簡潔に説明しましょう!
どこにも説明がない
/**
* 商品の合計価格を計算します。
* @param priceList 価格のリスト
* @return 合計価格
*/
public int calculateTotalPrice(List<Integer> priceList) {
// ...
}
→プログラムの実行に影響を与えない注釈や説明を記述できる
制御フロー
1. 早期リターンさせよう!
不要なネスト(入れ子)を避けるために、条件に合わない場合は早めにメソッドから抜けさせましょう。
public void processOrder(Order order) {
if (order != null) {
if (order.isAvailable()) {
// 処理
} else {
// エラー処理
}
}
}
→メインの処理にたどり着くまで複数の条件を読み解く必要があり、コードの意図がすぐに伝わりにくい
public void processOrder(Order order) {
if (order == null || !order.isAvailable()) {
// エラー処理やログ出力
return;
}
// メインの処理
}
→メインの処理が実行されるための前提条件を簡単に把握できる
2. boolean比較を省略しよう!
boolean型の変数やメソッドの戻り値を== trueや== falseと比較するのは冗長です。
if (isCompleted == true)
if (isCompleted)
クラスとメソッド
1. voidとfunctionの役割をわけよう!
以下の役割を守ろう!
- voidメソッド: 何らかの処理を実行することに特化し、値を返さない
- function(値を返すメソッド): 値を取得、計算することに特化し、void的な副作用(画面出力など)を持たせない
calculateAndPrintTotal(price);
→計算と出力を両方行うため、再利用が難しい
// 計算のみを行い、結果を返す
public int calculateTotal(int price) {
return price + 100;
}
// 別の場所で結果を出力
System.out.println(calculateTotal(100));
→再利用可能
2. メソッドは一つのことだけをおこなおう!
一つのメソッドには、一つの役割だけを持たせましょう。
processDataAndSaveToFile()
→データ処理とファイル保存という2つの役割を持ってしまう。
processData()
saveToFile(data)
→1つの役割のみを持つ。
3. 無駄な変数を減らそう!
意味のない一時的な変数を減らすことで、コードがより簡潔になります。
var result = findProduct();
return result;
→returnだけで伝わる。
return findProduct();
さいごに
以上の点を気を付けるだけで1ランク上のコードが書けるようになると思います!
チーム開発でのコミュニケーションがスムーズになり、バグの少ない、高品質なコードへと繋げていきましょう!^^