プログラミングでは条件を満たしたら処理を実行するif文など、条件式で判定する構文はほぼ実装されていますよね。
その条件式、どうやって書いてます?というのが今回のコラムの内容です!
条件式には不等号の式をよく入れるなぁ。
比較演算子の式は真偽値を返しているからね。
if文について
今回はJavaを例にしていきます!Javaのif文の書き方は
if(条件式){
// 処理
}
このように書けます。
この条件式には真偽値が入り、trueなら処理を実行、falseなら実行せず、ですね。
条件式にはtrue、falseが直接入ることよりも比較演算子や関数などで返す結果で判定することが多いかと思います。
真偽値をどう判定するか
真偽値を返す関数があった場合を考えてみましょう。
public static boolean check(){
boolean b;
// 変数bにtrueかfalseを入れる処理
return b;
}
そしてこれをif文の条件式に組み込み判定するとき、みなさんはどう書きますか?
check()==true
でいいんじゃないの?
この場合はcheck()が真偽値を返すから、必ずしも等価演算子を使う必要がないんだ!
書き方のパターン!
その1:等価演算子を使う!
まずは等価演算子を使って書いてみましょう!
if(check() == true){
// 処理
}
falseを判定したいときはこう。
if(check() == false){
// 処理
}
なんだか冗長ですね。わかりやすいですけどもね。
今のコンピューターの性能ならパフォーマンスの差はほぼないでしょうが、長いとパフォーマンス悪そうですよね。
なので簡潔に書いてみましょう!
その2:真偽値をそのまま判定する!
等価演算子を使わないで描いてみたらこう!
if(check()){
// 処理
}
短い!コード量も少ないですね。
falseを判定したい場合はこう!
if(!check()){
// 処理
}
エクスクラメーションマークの「!」の否定演算子を使えば短くすっきり書けますね!
ただしこれの問題点があります。ちょっと見にくくないですか?
「!」があるのかないのか、一目見ただけでは間違えてしまう可能性も。
可読性が先ほどのものより少し悪いですね。
じゃあどうするか!
じゃあもう混ぜちゃおう!という考え方もできますね。trueの時は短く書いてすっきりさせて、falseの時は長く書いて可読性よく。時代はハイブリッドなのかもしれません。
// true判定の場合
if(check()){
// 処理
}
// false判定の場合
if(check() == false){
// 処理
}
これなら可読性を維持しつつ少しすっきりもできますね。
この書き方を推奨している情報も結構多いです。
ただ個人的には否定演算子を使う方が好きです笑
シンプルでいいなぁと思ってしまって。
まぁ実際はコード規約や慣例に従うと思うので、あまり考えることではないかもしれませんね。
個人で何かを作る際、このことについて考えてみるのもいいかもしれません。
書き方ひとつにもいろいろあるんだね!
冗長性を取るか、可読性を取るか、TPOを考えて使い分けようね!
コメント