संक्षिप्त उत्तर: हां, तार किसी भी कार्य के लिए आदर्श नहीं होते हैं, इसके अलावा पाठ पात्रों के एक क्रम को संग्रहीत करना और पहुंचना, और यहां तक कि अगर एक अमूर्त के अंतर्निहित टुकड़े तार होते हैं, तो उन्हें चर या स्थिरांक के रूप में संदर्भित करने के लाभ हैं ।
दीर्घ उत्तर: अधिकांश भाषाएं उन प्रकारों की पेशकश करती हैं जो आपकी समस्या के क्षेत्र के करीब हैं, और यहां तक कि अगर वे नहीं करते हैं, तो उनके पास संभवतः कुछ विधि है जिसके द्वारा आप left
एक इकाई के रूप में परिभाषित कर सकते हैं जो right
(आदि) से अलग है । इसका उपयोग करके इसे स्ट्रिंग में बदलना "left"
भाषा और आईडीई की सहायक कार्यक्षमता जैसे त्रुटि जाँच के लिए उपयोग करना है। भले ही आपको इस्तेमाल करना पड़े
left = "left";
या इसके समतुल्य, इसके स्ट्रिंग के उपयोग के फायदे हैं जब आप इसे अपने कोड में संदर्भित करते हैं। उदाहरण के लिए,
if (player.direction == Left)
एक संकलन-समय त्रुटि (सबसे अच्छा मामला, जावा और इस तरह) का पता लगाया जाएगा या किसी भी आईडीई द्वारा उसके बिट्स को गलत (सबसे खराब मामला, बुनियादी और इस तरह) के रूप में चिह्नित किया जाएगा।
इसके अलावा, left
एक रेफरेंसेबल इकाई के रूप में धारणा होने से आपको उस दिशा के प्रकार के साथ जाने के लिए जो भी दिशा तय करने में मदद मिलेगी। का उपयोग करके "left"
, दिशा एक होने के लिए प्रतिबद्ध है String
। यदि आप पाते हैं या प्रकार के लिए एक बेहतर अमूर्तता बनाते हैं, तो आपको अपने पूरे कोड बॉडी के माध्यम से हर उदाहरण को बदलते हुए शिकार पर जाने की आवश्यकता है "left"
। यदि किसी प्रकार को विस्तृत किया जाता है, तो एक स्थिर या चर को किसी भी बदलाव की आवश्यकता नहीं होगी।
वह प्रकार जो आप वास्तव में चाहते हैं, विशेष रूप से आपके डोमेन के लिए है। आपका कोड आपके साथ क्या करने की योजना बना रहा है left
? शायद आप एक बनावट के एक्स अक्ष को दर्पण करना चाहेंगे या बाईं ओर का सामना करना पड़ रहा है या आगे बढ़ना चाहते हैं; यदि ऐसा है, तो आप left
एक संपत्ति या विधि के साथ एक वस्तु बनाना चाह सकते हैं जो उस व्यवहार को दर्शाती है, जिसमें आपकी right
वस्तु विपरीत गैर-प्रतिबिंबित परिणाम है। आप उस तर्क को उस वस्तु में कर सकते हैं जो स्प्राइट्स या बनावट का प्रतिनिधित्व करता है, जिस स्थिति में आप ऊपर बताए गए कारणों के "left"
बजाय उपयोग करने के left
लिए फिर से पीड़ित होंगे ।
जावा में (और शायद अन्य भाषाएं जो मैं अभी तक नहीं जानता हूं), enum
एक अच्छा विकल्प है क्योंकि जावा में, उदाहरणों के सीमित सेट के साथ enum
उपयोगी है final class
। यदि आपको उनकी आवश्यकता है, तो आप व्यवहार को परिभाषित कर सकते हैं, और आप फ़ाइल के बाहर किसी भी परेशानी के बिना एक खुली कक्षा में स्विच कर सकते हैं, जो घोषित करता है enum
, लेकिन कई भाषाओं enum
को एक आदिम प्रकार के रूप में देखा जाता है या उपयोग करने के लिए विशेष सिंटैक्स की आवश्यकता होती है। यह enum
हुड को उस कोड के लिए लीक करता है जिसका इसके साथ कोई व्यवसाय नहीं है और बाद में इसे ठीक करने की आवश्यकता हो सकती है। आप enum
विकल्प पर विचार करने से पहले अपनी भाषा की अवधारणा को समझ लें ।