Jawaban singkat: Ya, string tidak ideal untuk tugas apa pun selain menyimpan dan mengakses urutan karakter tekstual, dan bahkan jika bit yang mendasari abstraksi adalah string, ada manfaat untuk merujuknya sebagai variabel atau konstanta .
Jawaban panjang: sebagian besar bahasa menawarkan jenis yang lebih dekat ke domain masalah Anda, dan meskipun tidak, mereka mungkin memiliki beberapa metode yang dapat Anda definisikan left
sebagai entitas yang berbeda dari right
(dll.). Mengubahnya menjadi string dengan menggunakan "left"
hanyalah kehilangan bahasa dan fungsi IDE yang bermanfaat seperti pengecekan kesalahan. Bahkan jika Anda harus menggunakannya
left = "left";
atau sesuatu yang setara, itu memiliki keuntungan menggunakan string ketika Anda merujuknya di kode Anda. Sebagai contoh,
if (player.direction == Left)
akan dideteksi sebagai kesalahan waktu kompilasi (kasus terbaik, java, dan semacamnya) atau ditandai oleh IDE apa pun yang bernilai bitnya salah (kasus terburuk, dasar, dan semacamnya).
Selain itu, memiliki gagasan left
sebagai entitas yang dapat dirujuk akan membantu Anda mengakomodasi arah apa pun yang Anda putuskan untuk digunakan dengan tipe arah. Dengan menggunakan "left"
, arahan berkomitmen untuk menjadi a String
. Jika Anda menemukan atau membuat abstraksi yang lebih baik untuk jenis ini, Anda perlu menelusuri seluruh badan kode Anda untuk mengubah setiap instance "left"
. Konstanta atau variabel tidak akan memerlukan perubahan apa pun jika jenisnya dielaborasi.
Jenis yang Anda inginkan adalah khusus untuk domain Anda. Apa yang akan dilakukan perencanaan kode Anda dengan kode Anda left
? Mungkin Anda ingin mencerminkan sumbu x dari tekstur atau sprite yang menghadap ke kiri atau bergerak maju; Jika demikian, Anda mungkin ingin membuat left
objek dengan properti atau metode yang mencerminkan perilaku itu, dengan right
objek Anda memiliki hasil yang berlawanan tanpa cermin. Anda dapat melakukan logika itu pada objek yang mewakili sprite atau tekstur, dalam hal ini Anda akan menderita karena menggunakan "left"
bukan left
karena alasan yang disebutkan di atas.
Di Jawa (dan mungkin bahasa lain yang belum saya kenal), enum
adalah alternatif yang baik karena di Jawa, enum
sama bermanfaatnya final class
dengan serangkaian contoh yang terbatas. Anda dapat mendefinisikan perilaku jika Anda membutuhkannya, dan Anda dapat beralih ke kelas terbuka tanpa kerepotan di luar file yang menyatakan enum
, tetapi banyak bahasa melihat enum
tipe primitif atau memerlukan sintaks khusus untuk digunakan. Itu bocor enum
ke kode yang tidak memiliki bisnis dengan itu dan mungkin perlu diperbaiki nanti. Pastikan Anda memahami konsep bahasa enum
Anda sebelum mempertimbangkan opsi.