今日から始まる「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処理まわりをスッキリさせてもらいます。
次回をお楽しみに!
このエントリーは旧ブログで公開していた同テーマのエントリーを加筆修正したものです。