私はJavaScriptでゲームを開発しています。そこでは、変数「コントローラー」に格納されたユーザー入力から始めます。ユーザーのオプションは、ゲームを開始するための開始、またはゲームについて学ぶことから成ります。次のコードを使用しました
if(controller === "start"){
// Game code sitting here
}
else if(controller === "about"){
// All about the Game
}
else{
// Tells the user again to type start to start or about to learn about the game
}
代わりにスイッチケースを使用する必要があることに気づいたとき...
したがって、私の質問は、ifステートメントの代わりにswitchケースを使用する場合と、この場合にどのケースを使用するかです。また、ゲームコードを関数に格納し、コントローラーが「start」と等しい場合に呼び出す必要があるか、またはatmであるifステートメント/スイッチケース内に配置するかを知りたいですか?
switch
ステートメントの代わりにif
を使用する場合
次の場合は、switch
ではなくif
を使用します。
次の場合は、if
ではなくswitch
を使用します。
この場合、どちらを使用すればよいですか?
どちらがより快適か。状態エンジンの評価では、switch
ステートメントを使用すると、シノニムを後から簡単に追加できるため、多少の柔軟性が得られます。しかし、違いは重要ではありません。
ゲームコードを[seperate]関数に保存する必要がありますか、それともatmのifステートメント/ switchケースの中にコードを保存するだけですか。
各ブランチの内部コードを明確に別の関数に移動する必要があります。数千行の関数の真ん中にある場合、機能を簡単に単体テストすることはできません。
セマンティクス、セマンティクス、セマンティクス。
個人的には、このような状況でどちらがわかりやすいかを判断します。
理解の容易さに影響を与えるのは、やはり、私の意見では、おそらくいくつかの要因の組み合わせです。
if (x) { } else { }
の方がスリムだからです。最初の2つは、包括的かつ相互に排他的であり、物理的なスイッチについて考えることで思い付きます。 5つの状態にできるスイッチがあるとします。実際にスイッチになるためには、常に1つの状態にしかできません。状態を持つことはできず、別の状態と共存することもできません。ソフトウェアでは、これは、すべての入力について、少なくとも1つのcaseステートメントが一致する必要がある(デフォルトを含む)と言うようなものです。
繰り返しますが、これは私の個人的な好みです。これに関する公式のガイドラインがあるかどうかはわかりません。
ケースはこの操作にうまく適合します。また、シングルトンディクショナリをインスタンス化し、コントローラに実行する必要があるすべての機能をそのディクショナリに入力して、コントローラがアクティブになるたびにディクショナリを単純に処理することもできます。
If/thenを使用すると、caseステートメントや辞書よりも維持が非常に難しいため、問題が発生する可能性があります。