Réponse courte: Oui, les chaînes ne sont idéales pour aucune tâche autre que le stockage et l'accès à une séquence de caractères textuels, et même si les bits sous-jacents d'une abstraction sont des chaînes, il y a des avantages à les référencer en tant que variables ou constantes .
Réponse longue: la plupart des langues proposent des types plus proches du domaine de votre problème, et même si ce n'est pas le cas, elles ont probablement une méthode par laquelle vous pouvez définir left
en tant qu'entité différente de right
(etc etc). La transformer en chaîne en utilisant "left"
est simplement la perte de la langue et des fonctionnalités utiles de l'EDI telles que la vérification des erreurs. Même si vous devez utiliser
left = "left";
ou quelque chose d'équivalent, il a des avantages à utiliser la chaîne lorsque vous y faites référence dans votre code. Par exemple,
if (player.direction == Left)
serait détecté comme une erreur au moment de la compilation (dans le meilleur des cas, java et autres) ou serait signalé par n'importe quel IDE valant ses bits comme étant mauvais (dans le pire des cas, de base et autres).
De plus, le fait d'avoir la notion d' left
entité référençable vous aidera à s'adapter à la direction que vous décidez d'aller avec le type de direction. En utilisant "left"
, la direction s'engage à être a String
. Si vous trouvez ou créez une meilleure abstraction pour le type, vous devez parcourir tout le corps de votre code en changeant chaque instance de "left"
. Une constante ou une variable ne nécessitera aucune modification si le type est élaboré.
Le type que vous voulez vraiment est particulier à votre domaine. Qu'est-ce que votre code prévoit de faire avec vous left
? Peut-être voudrez-vous mettre en miroir l'axe x d'une texture ou d'un sprite qui fait face à gauche ou qui avance; si tel est le cas, vous souhaiterez peut-être créer left
un objet avec une propriété ou une méthode qui reflète ce comportement, votre right
objet ayant le résultat non inversé opposé. Vous pouvez faire cette logique dans un objet qui représente les sprites ou les textures, auquel cas vous souffrirez à nouveau pour l'utilisation "left"
au lieu des left
raisons indiquées ci-dessus.
En Java (et probablement dans d'autres langages que je ne connais pas encore), enum
c'est une bonne alternative car en Java, enum
c'est aussi utile final class
avec un ensemble fini d'instances. Vous pouvez définir des comportements si vous en avez besoin, et vous pouvez basculer vers une classe ouverte sans tracas en dehors du fichier qui déclare le enum
, mais de nombreuses langues voient un enum
comme un type primitif ou nécessitent une syntaxe spéciale à utiliser. Cela fuit le enum
capot vers un code qui n'a rien à voir avec cela et peut-être besoin d'être corrigé plus tard. Assurez-vous de bien comprendre le concept de votre langue enum
avant de considérer l'option.