Krótka odpowiedź: Tak, ciągi nie są idealne do zadań innych niż przechowywanie i uzyskiwanie dostępu do sekwencji znaków tekstowych, a nawet jeśli leżącymi u podstaw bitami abstrakcji są ciągi znaków, odniesienie ich jako zmiennych lub stałych jest korzystne .
Długa odpowiedź: większość języków oferuje typy, które są bliżej dziedziny twojego problemu, a nawet jeśli nie, prawdopodobnie mają jakąś metodę, dzięki której możesz zdefiniować left
jako byt inny niż right
(itp. Itp.). Przekształcenie go w ciąg za pomocą "left"
jest po prostu przepadkiem języka i pomocnej funkcji IDE, takiej jak sprawdzanie błędów. Nawet jeśli musisz użyć
left = "left";
lub coś równoważnego, ma tę zaletę, że używa łańcucha, gdy odwołujesz się do niego w całym kodzie. Na przykład,
if (player.direction == Left)
zostanie wykryty jako błąd czasu kompilacji (najlepszy przypadek, java itp.) lub oznaczony przez dowolne IDE warte swoich bitów jako zły (najgorszy przypadek, podstawowy itp.).
Ponadto posiadanie pojęcia bycia left
odniesieniem pomoże ci dostosować się do dowolnego kierunku, w którym zdecydujesz się pójść z typem kierunku. Używając "left"
, kierunek jest zobowiązany do bycia String
. Jeśli znajdziesz lub utworzysz lepszą abstrakcję dla tego typu, musisz przejść do przeszukiwania całego kodu, zmieniając każde wystąpienie "left"
. Stała lub zmienna nie będzie wymagać żadnych zmian, jeśli typ zostanie opracowany.
Typ, który naprawdę chcesz, jest specyficzny dla Twojej domeny. Co planuje zrobić z twoim kodem left
? Być może będziesz chciał wykonać kopię lustrzaną osi x tekstury lub duszka skierowanego w lewo lub poruszającego się do przodu; jeśli tak, możesz chcieć utworzyć left
obiekt za pomocą właściwości lub metody, która odzwierciedla to zachowanie, a twój right
obiekt ma przeciwny wynik bez dublowania. Możesz wykonać tę logikę w obiekcie reprezentującym duszki lub tekstury, w którym to przypadku ponownie będziesz cierpieć z powodu używania "left"
zamiast z left
powodów wymienionych powyżej.
W Javie (i prawdopodobnie w innych językach, których jeszcze nie znam) enum
jest dobrą alternatywą, ponieważ w Javie enum
jest równie przydatna, jak final class
ze skończonym zestawem instancji. Możesz zdefiniować zachowania, jeśli ich potrzebujesz, i możesz przejść do otwartej klasy bez żadnych kłopotów poza plikiem, który deklaruje enum
, ale wiele języków postrzega enum
jako prymitywny typ lub wymaga specjalnej składni. To przecieka enum
kod do kodu, który nie ma z tym nic wspólnego i może wymagać późniejszej korekty. enum
Przed rozważeniem tej opcji upewnij się, że rozumiesz koncepcję swojego języka .