【C#】returnで条件分岐をきれいにしたい!
はじめに
コードを書いていると、どうしても条件が複雑になったりしますよね。
returnを利用してきれいにする流れを個人的にまとめてみました。
直したいコード
private void Attack (int power) { if(waitTime == 0) { if(forwardEnemy) { forwardEnemy.GetComponent<EnemyStatus>().Damage(power); } } }
条件がネストしているので、条件から外れるときにリターンをするようにします。
private void Attack (int power) { if(!(waitTime == 0)) return; if(!forwardEnemy) return; forwardEnemy.GetComponent<EnemyStatus>().Damage(power); }
条件を関数化します。
private void Attack (int power) { if(EnableAttack()) return; forwardEnemy.GetComponent<EnemyStatus>().Damage(power); } private bool EnableAttack () { if(!(waitTime == 0)) return false; if(!forwardEnemy) return false; return true; }
EnableAttackで条件式を直接返します。
private void Attack (int power) { if(EnableAttack()) return; forwardEnemy.GetComponent<EnemyStatus>().Damage(power); } private bool EnableAttack () { return (waitTime == 0) && forwardEnemy; }
最初よりはきれいになりました。
条件のネストが深くなるにつれてreturnでの整理は効果を増すはずです。