2つの値の比較結果を真偽値で返すときはif文は使わず条件式を直接returnしよう

プログラミング

プログラミングでは、可読性が高く、無駄の少ないコードを書くことが求められますが、学習を進める中で私自身がやってしまっていたコーディング方法がありました。

それは、等価演算子や比較演算子を用いて2つの値を比べた結果を、 true か false で返すとき、if文を使っていたことです。

以下で、具体例を用いて説明しています(JavaScript)。

等価演算子・比較演算子で2つの値を比べるときの注意点

結論

2つの値の比較結果を true か false で返したい時には、return ステートメントを使って、演算子の評価結果を直接返す。

等価演算子・比較演算子とは

等価演算子・比較演算子とは以下のような演算処理結果を返す記号のこと。
そして、これらの演算子は評価結果として、ブール型の真偽値(true か false)を返します。

記号処理結果
==左オペランドと右オペランドが等しければtrueを返す
!=左オペランドと右オペランドが等しくなければtrueを返す
>左オペランドが右オペランドより大きければtrueを返す
<左オペランドが右オペランドより小さければtrueを返す
>=左オペランドが右オペランドより大きいまたは等しければtrueを返す
<=左オペランドが右オペランドより小さいまたは等しければtrueを返す

if文を使った悪い例

具体例として、整数xを受け取り、xが10以上かを判定する、is10OrMore という関数を定義します。

//悪い例
function is10OrMore(x){
    if (x >= 10){
        return true;
    }else{
        return false;
    }
}
// is10OrMore(11) -> true
// is10OrMore(7) -> false

if文を使うと条件分岐を実装することができ、下記の条件式の評価結果が true であれば、ifの中のステートメントが実行されます。

if(条件式){
    ステートメント;
}

なぜif文を使わない方がいいのか

上記関数は、if文を使っており、xが10以上なら true 、そうでなければ false を返すという処理になっています。一見、条件分岐を使って読みやすく書けているように見えますが、実は無駄があります。

なぜなら、比較演算子は評価結果として真偽値を返すからです。
比較演算子 「 >= 」 は、左オペランドが右オペランドより大きいまたは等しければ true を返し、
左オペランドが右オペランドより小さければ false を返します。

つまり、x >= 10 の評価結果自体が、真偽値(trueまたはfalse)です

上記関数は、条件式が true なら true を返し、false なら false を返すという無駄が多いコードとなっています。

return ステートメントのみで記述できる

return ステートメントにifの条件式をそのまま用いれば、2つの値を比較した判定結果が戻されます。

//よい例
function is10OrMore(x){
    return x >= 10;
}
// is10OrMore(11) -> true
// is10OrMore(7) -> false

どちらが可読性が高く無駄が少ないかは一目瞭然です。

まとめ

2つの値の比較結果を true か false で返したい時には、return ステートメントを使って、演算子の評価結果を直接返す。

これは数値の比較以外でも当てはまるので、可読性が高いコードを書くために今後も意識していきたいと思います。

コメント

タイトルとURLをコピーしました