今日から始まる「Unityで書く C# if文省略形シリーズ」、全3回の第一弾です。
これを読んでいるあなたも、きっと心のどこかでこう思ったことがあるはずです。

if文、{}書くのめんどくさくない?
少なくともKuroMikanはいつも思っています。
というわけで、今回はそんなズボラ心に寄り添いながら、あなたの if 文をスッキリさせましょう。
{}を省略する
🗂️ 普通バージョン
if (isHungry)
{
    EatRamen();
}波カッコ {} をちゃんと書く。真面目で偉い。
でも1行しかないなら、ちょっとお行儀が良すぎるかもという話。
✂️ 省略バージョン
if (isHungry)
    EatRamen();たった1文だけなら、これで十分。改行せずに1行で書いてもOK。
ただし、2文目を書いた瞬間に罠が待っているので注意。
⚠️ 罠バージョン
if (isHungry)
    EatRamen();
    Sleep();これ、Sleep() は if と無関係です!
人間でいうと「ラーメン食べた人も、食べてない人も全員寝る」状態です。
意図せず寝落ちしないように、波カッコの扱いにはご注意を。
三項演算子で書く
🗂️ 普通バージョン(if-else)
string result;
if (score >= 80)
{
    result = "Great!";
}
else
{
    result = "Try Again!";
}これでも全然OKなんですが、三項演算子を使うと・・・
🌀 三項演算子バージョン
string result = score >= 80 ? "Great!" : "Try Again!";条件がtrueなら左側を代入、falseなら右側を代入してくれます。
値の代入だけなら、三項演算子を使うとスマートに書けます。
ただし、あまりに複雑にするとコードを読んだ人の脳みそが爆発するので、使いどころを考えましょう。
コラム: ifネスト沼から脱出しよう
条件に条件を重ねたコードを書くとき、if文がネストするときがあります。
🗂️ ありがちネスト地獄
if (isReady)
{
    if (hasPermission)
    {
        if (isUserLoggedIn)
        {
            DoSomething();
        }
    }
}
この例はまだマシな方で、5重6重当たり前になってくると本当にシンドイです。
条件に合うなら次の条件に進む、というこの考え方は一旦置いておきましょう。
🧹 スッキリバージョン(早期return)
if (!isReady) return;
if (!hasPermission) return;
if (!isUserLoggedIn) return;
DoSomething();
条件に合わないなら即帰る、という考え方はいかがでしょうか。
人間関係もそうありたいですね^ー^
次回予告:null界隈の解説
さてさて、次回の if文省略形シリーズ 第二弾 は
- ??(null合体演算子)
- ??=(null合体割り当て演算子)
- ?.(null条件演算子)
この御三方にnull処理まわりをスッキリさせてもらいます。
次回をお楽しみに!
このエントリーは旧ブログで公開していた同テーマのエントリーを加筆修正したものです。
 
  
  
  
  

