を使用する代わりにgoto
、コードをリファクタリングして、共通のコードを使用する 2 つ (またはそれ以上) のケースが代わりに共通のメソッドでそれを呼び出すようにします。
何かのようなもの:
switch (value) {
case (firstValue):
// ...
break;
case (secondValue):
[self doSharedCodeForSecondAndThirdValues];
break;
case (thirdValue):
[self doSharedCodeForSecondAndThirdValues];
break;
default:
break;
}
// ...
- (void) doSharedCodeForSecondAndThirdValues {
// do stuff here that is common to second and third value cases
}
goto
悪い習慣ではありますが、を使用することは世界の終わりではありません。
の使用を避ける実際的な理由は、そのラベルを見つけるためにツリーをgoto
検索する必要があるためです。swtich-case
goto
スイッチのロジックが変更されると、厄介な状況が発生します。
共通コードを独自のメソッドに引き出すと、コードが読みやすくなり、デバッグや拡張が容易になります。