Risposta breve: Sì, le stringhe non sono ideali per attività diverse dall'archiviazione e dall'accesso a una sequenza di caratteri testuali, e anche se i bit sottostanti di un'astrazione sono stringhe, ci sono vantaggi nel riferirle come variabili o costanti .
Risposta lunga: la maggior parte delle lingue offre tipi più vicini al dominio del problema e, anche se non lo fanno, probabilmente hanno un metodo con il quale è possibile definire left
un'entità diversa da right
(ecc. Ecc.). Trasformarlo in una stringa utilizzando "left"
è semplicemente la perdita della lingua e la funzionalità utile di IDE come il controllo degli errori. Anche se devi usare
left = "left";
o qualcosa di equivalente, ha dei vantaggi nell'usare la stringa quando ci si riferisce a tutto il codice. Per esempio,
if (player.direction == Left)
verrebbe rilevato come errore di compilazione (nel migliore dei casi, java e simili) o contrassegnato da qualsiasi IDE degno dei suoi bit come errato (nel peggiore dei casi, di base e simili).
Inoltre, la nozione di left
entità riferibile ti aiuterà a soddisfare qualsiasi direzione decidi di seguire il tipo di direzione. Usando "left"
, la direzione si impegna a essere a String
. Se trovi o crei un'astrazione migliore per il tipo, devi andare a caccia attraverso l'intero corpo del codice cambiando ogni istanza di "left"
. Una costante o variabile non richiederà alcuna modifica se il tipo viene elaborato.
Il tipo che desideri davvero è particolare per il tuo dominio. Che cosa prevede di fare il tuo codice con il tuo left
? Forse vorrai rispecchiare l'asse x di una trama o uno sprite che è rivolto a sinistra o si sposta in avanti; in tal caso, potresti voler creare left
un oggetto con una proprietà o un metodo che rifletta quel comportamento, con l' right
oggetto con il risultato opposto non speculare. Potresti fare quella logica in un oggetto che rappresenta gli sprite o le trame, nel qual caso soffrirai di nuovo per l'uso "left"
invece che left
per i motivi sopra indicati.
In Java (e probabilmente in altre lingue che non conosco ancora), enum
è una buona alternativa perché in Java enum
è utile final class
con un set limitato di istanze. Puoi definire comportamenti se ne hai bisogno e puoi passare a una classe aperta senza problemi al di fuori del file che dichiara il enum
, ma molte lingue vedono un enum
tipo primitivo o richiedono una sintassi speciale da usare. Ciò perde il enum
cappuccio per codice che non ha alcuna attività commerciale e potrebbe essere necessario correggerlo in seguito. Assicurati di comprendere il concetto di lingua enum
prima di prendere in considerazione l'opzione.