こんばんは!マル太です。
前回は、リーダブルコードの第7章「制御フローを読みやすくする」についてまとめました。
今回は、第8章「巨大な式を分割する」について、私なりに解釈し、まとめていきます。
巨大な式があるとなぜ良くない?
プログラムを書いていると、ついつい式が長くなってしまいがちです。
ただし、巨大な式は、まるでジャングルの中をさまようように、コードが読みにくくなってしまいます。
例えば、こんな式があったら、どうでしょうか?
if (年齢 >= 20 && (職業 == "会社員" || 職業 == "公務員") && 年収 >= 300万円) {
// ローンを承認する
}
この式は、年齢、職業、年収の3つの条件を組み合わせて、ローンを承認するかどうかを判断しています。
でも、ぱっと見ただけでは、どんな条件でローンが承認されるのか、分かりにくいですよね?
式を分割して、コードをスッキリさせよう!
巨大な式を分割すると、コードが読みやすくなるだけでなく、バグも減りやすくなります。
式を分割するためのテクニックを、紹介していきます。
1. 説明変数を使う
複雑な条件式を、分かりやすい名前の変数に置き換えてみましょう。
boolean 大人である = 年齢 >= 20;
boolean 安定した職業 = 職業 == "会社員" || 職業 == "公務員";
boolean 高収入 = 年収 >= 300万円;
if (大人である && 安定した職業 && 高収入) {
// ローンを承認する
}
このように、「大人である」、「安定した職業」、「高収入」といった変数を使うことで、コードがまるで文章を読んでいるように理解しやすくなりますね。
2. 要約変数を使う
長い計算式を、短い変数名でまとめてみましょう。
// 分割前
int 合計金額 = 単価 * 数量 * (1 + 税率);
// 分割後
double 税込み単価 = 単価 * (1 + 税率);
int 合計金額 = 税込み単価 * 数量;
「税込み単価」という変数を使うことで、計算式が2つに分かれ、それぞれが何を計算しているのかが明確になりました。
3. ド・モルガンの法則を使う
ド・モルガンの法則とは、
条件式を、より分かりやすい形に変換する法則です。
!(A && B)
は !A || !B
と同じ
!(A || B)
は !A && !B
と同じ
例えば、「AさんとBさんが 両方 来ない」ということは、「Aさんが来ない または Bさんが来ない」ということと同じ意味ですよね。
これが、!(A && B)
は !A || !B
と同じ、という意味です。
4. 短絡評価の悪用は避ける
短絡評価とは、条件式の一部を評価せずに結果が決まる仕組みのことです。
便利ですが、使いすぎるとコードが分かりにくくなるので、注意が必要です。
5. 複雑なロジックはシンプルに
複雑な条件分岐や計算式は、できるだけ分割して、シンプルに表現しましょう。
複雑なコードは、バグの原因になりやすいので、分かりやすく整理することが大切です。
6. 巨大な文もは改行で分割
1行が長すぎる文は、複数の行に分割して読みやすくしましょう。
7. 式を簡潔にするには?
APIの設計を見直したり、適切なデータ構造を使うなど、さまざまな方法で式を簡潔にすることができます。
※APIの設計って?
APIとは、ソフトウェアの機能を外部から利用するためのインターフェースのことです。
APIの設計が分かりやすければ、コードもシンプルになります。
例えば、ユーザー情報を名前で検索するAPIがあるとします。
このAPIをgetUserByName()
という名前にすると、「ユーザーを取得する」という動作と「名前で検索する」という条件が混ざってしまい、少し分かりにくいです。
そこで、findUserByName()
という名前に変更すると、「名前でユーザーを検索する」というAPIの目的がより明確になります。
APIの名前が具体的で分かりやすくなると、そのAPIを使う側のコードもシンプルになります。
例えば、getUserByName()
を使う場合は、以下のようなコードになるかもしれません。
User user = getUserByName("田中太郎");
if (user != null) {
// userが見つかった場合の処理
} else {
// userが見つからなかった場合の処理
}
一方、findUserByName()
を使う場合は、以下のようなコードになります。
User user = findUserByName("田中太郎");
// userが見つかった場合の処理
findUserByName()
は、ユーザーが見つからなかった場合はnullを返さないと想定できるので、nullチェックが不要になり、コードが簡潔になりました。
まとめ
巨大な式を分割することで、コードが読みやすくなるだけでなく、バグも減りやすくなります。
今回紹介したテクニックを活用して、分かりやすいコードを書きましょう。
次回は、第9章「変数と読みやすさ」についてまとめます。