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();