コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】if文の重複を回避する

例えば下記のような処理があったとして

private Character character;

private void Attack()
{
    if (character == null)
    {
        return;
    }
    character.Attack();
}

private void Defense()
{
    if (character == null)
    {
        return;
    }
    character.Defense();
}

if文の判定が重複してあまりカッコよくないですが
コールバック関数を使うと下記のように記述できます

private Character character;

private void Attack()
{
    Execute(() => character.Attack());
}

private void Defense()
{
    Execute(() => character.Defense());
}

private void Execute(Action act)
{
    if (character == null)
    {
        return;
    }
    act();
}

キレイなやり方なのかどうかはわかりませんが、個人的には好きな書き方です