Kısa cevap: Evet, dizeler, bir dizi metin karakterini depolamak ve bunlara erişmek dışında herhangi bir görev için ideal değildir ve bir soyutlamanın temel bitleri dizeler olsa bile, bunları değişkenler veya sabitler olarak ifade etmenin faydaları vardır .
Uzun cevap: Çoğu dil, sorununuzun alanına yakın olan türler sunar ve bunu yapmasalar bile, muhtemelen (vb.) 'Den left
farklı bir varlık olarak tanımlayabileceğiniz bazı yöntemleri vardır right
. Bunu kullanarak bir dizeye dönüştürmek "left"
, dilin ve IDE'nin hata denetimi gibi yararlı işlevlerinin kaybedilmesidir. Kullanmanız gerekse bile
left = "left";
veya eşdeğeri bir şey varsa, kodu kodunuzda belirttiğinizde dizeyi kullanmanın avantajları vardır. Örneğin,
if (player.direction == Left)
derleme zamanı hatası (en iyi durum, java ve benzeri) olarak algılanır veya bitlerine değen herhangi bir IDE tarafından yanlış (en kötü durum, temel ve benzeri) olarak işaretlenir.
Buna ek olarak, yönlendirilebilir left
bir varlık kavramına sahip olmak, yön türüne gitmeye karar verdiğiniz her yöne uyum sağlamanıza yardımcı olacaktır. Kullanarak "left"
, yön a String
. Tür için daha iyi bir soyutlama bulursanız veya oluşturursanız, tüm kod gövdesini her örneğini değiştirerek avlamaya gitmeniz gerekir "left"
. Bir sabit veya değişken, tür ayrıntılandırılmışsa herhangi bir değişiklik gerektirmez.
Gerçekten istediğiniz tür, alan adınıza özgüdür. Kodunuz sizin için ne planlıyor left
? Belki sola bakan veya ileriye doğru hareket eden bir doku veya hareketli grafiğin x eksenini yansıtmak istersiniz; öyleyse, left
bu davranışı yansıtan bir özelliğe veya yönteme sahip bir right
nesne , nesnenizin yansıtılmamış ters sonuca sahip olmasını isteyebilirsiniz . Bu mantığı, spriteları veya dokuları temsil eden bir nesnede yapabilirsiniz, bu durumda yukarıda belirtilen nedenler "left"
yerine kullanmak için tekrar acı çekersiniz left
.
Java'da (ve muhtemelen henüz bilmediğim diğer dillerde), enum
iyi bir alternatiftir, çünkü Java'da, sınırlı bir örnek kümesiyle enum
yararlıdır final class
. Gerekirse davranışları tanımlayabilirsiniz ve dosya dışında herhangi bir sorun olmadan açık bir sınıfa geçebilirsiniz enum
, ancak birçok dil enum
bir ilkel tür olarak görür veya kullanmak için özel sözdizimi gerektirir. Bu, enum
kaputu onunla hiçbir işi olmayan kodlara sızdırıyor ve daha sonra düzeltilmesi gerekebilir. enum
Seçeneği düşünmeden önce dilinizin an kavramını anladığınızdan emin olun .