Skip to content

10. フラグ引数を使わない

メソッドに渡してメソッドの機能を切り替えるbool型の引数のことをフラグ引数といいます。フラグ引数付きのメソッドは、何が起こるかを把握するのが難しくなり可読性が悪いです。フラグ引数は使わず、機能ごとにメソッドを分離しましょう。

csharp
// ❌ Bad: フラグ引数で機能を切り替え
void Attack(bool isSpecialAttack)
{
    if (isSpecialAttack)
    {
        ConsumeMP(50);
        DealDamage(attackPower * 3);
        PlayEffect("SpecialAttack");
    }
    else
    {
        DealDamage(attackPower);
        PlayEffect("NormalAttack");
    }
}

// 呼び出し側: trueって何?
Attack(true);   // ???
Attack(false);  // ???
csharp
// ✅ Good: メソッドを分離
void NormalAttack()
{
    DealDamage(attackPower);
    PlayEffect("NormalAttack");
}

void SpecialAttack()
{
    ConsumeMP(50);
    DealDamage(attackPower * 3);
    PlayEffect("SpecialAttack");
}

// 呼び出し側: 何をするか明確
NormalAttack();
SpecialAttack();

Unity設計講習会 資料公開ページ