簡単な答え:はい、文字列は一連のテキスト文字の保存とアクセス以外のタスクには理想的ではありません。抽象化の基礎となるビットが文字列であっても、変数または定数として参照することには利点があります。
長い答え:ほとんどの言語は、問題のドメインに近い型を提供します。そうでない場合でも、おそらく(etcなど)left
とは異なるエンティティとして定義できる方法がありますright
。を使用して文字列に変換すること"left"
は、単に言語およびエラーチェックなどのIDEの便利な機能を失うことです。使用する必要がある場合でも
left = "left";
または何か同等のものを使用すると、コード全体で文字列を参照するときに文字列を使用する利点があります。例えば、
if (player.direction == Left)
コンパイル時エラー(ベストケース、javaなど)として検出されるか、またはそのビットに相当するIDEによってフラグが付けられます(最悪の場合、基本など)。
さらにleft
、参照可能なエンティティとしての概念を持つことは、方向のタイプに応じて決定する方向に対応するのに役立ちます。を使用することにより"left"
、方向はになりString
ます。型のより良い抽象化を見つけたり作成したりする場合は、コード本体全体を探索して、のすべてのインスタンスを変更する必要があります"left"
。型が作成されている場合、定数または変数を変更する必要はありません。
本当に必要なタイプは、ドメインに固有のものです。あなたのコードの計画は何left
ですか?おそらく、左を向いている、または前方に移動しているテクスチャまたはスプライトのx軸をミラーリングしたいでしょう。その場合、left
その動作を反映するプロパティまたはメソッドを使用してright
オブジェクトを作成し、オブジェクトは反対のミラー化されていない結果になる場合があります。スプライトまたはテクスチャを表すオブジェクトでそのロジックを実行できます。この場合も、上記の理由では"left"
なく使用することに苦しむでしょうleft
。
Java(およびおそらく私がまだ知らない他の言語)ではenum
、Java の場合はインスタンスの有限セットとenum
同様に有用であるため、優れた代替手段ですfinal class
。必要に応じてビヘイビアを定義できます。またenum
、を宣言するファイルの外部で手間をかけずにオープンクラスに切り替えることができますが、多くの言語はをenum
プリミティブタイプと見なすか、使用するために特別な構文を必要とします。それenum
は、それと関係のないコードにフードをリークし、後で修正する必要があるかもしれません。enum
オプションを検討する前に、言語の概念を理解してください。