【Unity×C#】if文省略形シリーズ 第一弾:{}省略、三項演算子編

Unity

今日から始まる「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処理まわりをスッキリさせてもらいます。
次回をお楽しみに!


このエントリーは旧ブログで公開していた同テーマのエントリーを加筆修正したものです。

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