プログラミングで私が学んだことの1つは、caseステートメントは必要ないということではなく、caseステートメントは必要ないということです。
ケースステートメントは、オブジェクトを肥大化させる方法です。それを使用すると、メンテナンスが低下します。その時点で必要なすべての可能性がありますが、何かを追加したい日は、そのオブジェクトの責任の微妙さをもう覚えていないときに厄介なコードを確認する必要があるので、それを膨らませますさらに。
非常に短期的には、彼らは友好的に見えますが、ケースステートメントはあなたの友達ではありません。彼らは長期的にあなたを噛むでしょう。
また、コードの柔軟性が低下します。たとえば、前のコードについて自信を持ってケースを追加することはできません。なぜそのようにコーディングされたのかを思い出せなくなった場合、古いコードを確認する必要があります。
ケースステートメントは、優れたコードの敵です。
ifTrue:ifFalse:を超える何かがある場合、正しいことはそのための状態を作成することです。つまり、非常に単純で、すべて動詞を理解する3つのクラスを実装する必要があります。
言ってやるが、#doTheNextThing。したがって、オブジェクトはメッセージを受信すると、状態(3つ(または30)のいずれかであるため、複雑さを適切にスケーリングすることに注意してください)に委任し、状態は元の受信者を正しく反応させる方法を知っています。
これにより、コードが軽く、明白で、保守性が高くなります。それをもう一度見ると、すべてが非常に明白であるため、コードの将来ほど過去のコードについて考える必要がないことを知っているので、それを忘れることができます。
あなたのメモリはあなたが持っている最も高価なメモリであり、AFAIKはアップグレードできないので、それは重要です。したがって、この手法を使用すると、より強力な処理を実行できます。
その上、3つのクラスを作成することは、一部の人にとってはより多くの作業のように聞こえるかもしれませんが、そうではありません。どの初心者も一瞬で3つの空のクラスを追加できますが、古いコードのcaseステートメントがどのように作成されたかを覚えているのは適切な専門家だけです。そして、あなたが非常に楽観的であるならば、それを思い出すのに数分かかるでしょう、それであなたは皆次に何をすべきかを知っています。それについて考えてください。