プログラミングでは、可読性が高く、無駄の少ないコードを書くことが求められますが、学習を進める中で私自身がやってしまっていたコーディング方法がありました。
それは、等価演算子や比較演算子を用いて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 ステートメントを使って、演算子の評価結果を直接返す。
これは数値の比較以外でも当てはまるので、可読性が高いコードを書くために今後も意識していきたいと思います。
コメント