यह बहुत स्पष्ट है यदि आप इस प्रश्न के पहले वाक्य को पढ़ते हैं कि यह सवाल
जादू की संख्या को खत्म करने
जैसे उपयुक्त उपयोगों के बारे में नहीं है , तो यह सबसे अच्छी तरह से भयानक नासमझ मूर्खता के बारे में है। यह कौन सा उत्तर है
सामान्य ज्ञान आपको बताता है कि आपके सिस्टम में रखरखाव और जटिलता के अलावा कुछ भी नहीं है const char UPPER_CASE_A = 'A';
या const char A = 'A'
नहीं। const char STATUS_CODE.ARRIVED = 'A'
एक अलग मामला है।
स्थिरांक उन चीजों का प्रतिनिधित्व करने वाले हैं जो रनटाइम में अपरिवर्तनीय हैं, लेकिन संकलन समय पर भविष्य में संशोधित करने की आवश्यकता हो सकती है। कब const char A =
सही रूप से के अलावा कुछ भी समान होगा A
?
यदि आप public static final char COLON = ':'
जावा कोड में देखते हैं , तो खोजें कि किसने लिखा है और उनके कीबोर्ड को तोड़ दें। यदि आपके द्वारा COLON
कभी भी परिवर्तन के लिए प्रतिनिधित्व :
एक रखरखाव दुःस्वप्न होगा।
कहानियो:
क्या होता है जब कोई इसे बदलता है COLON = '-'
क्योंकि जहां वे इसका उपयोग कर रहे हैं उन्हें -
हर जगह इसके बजाय जरूरत है? क्या आप इकाई परीक्षण लिखने जा रहे हैं जो मूल रूप assertThat(':' == COLON)
से हर एक const
संदर्भ के लिए कहते हैं कि वे बदल नहीं जाते हैं? केवल किसी के पास परीक्षण को ठीक करने के लिए जब वे उन्हें बदलते हैं?
यदि कोई वास्तव में यह तर्क देता है कि public static final String EMPTY_STRING = "";
उपयोगी और लाभदायक है, तो आप सिर्फ उनके ज्ञान को योग्य बनाते हैं और उन्हें बाकी सब चीजों पर सुरक्षित रूप से अनदेखा करते हैं।
एक नामित संस्करण के साथ उपलब्ध प्रत्येक मुद्रण योग्य चरित्र का प्रदर्शन केवल यह दर्शाता है कि जिसे भी उसने किया है, वह अनप्लिकेटेड कोड लिखने के लिए योग्य नहीं है।
सामंजस्य:
यह कृत्रिम रूप से सामंजस्य को भी कम करता है, क्योंकि यह चीजों को उन चीजों से दूर ले जाता है जो उनका उपयोग करते हैं और उनसे संबंधित हैं।
कंप्यूटर प्रोग्रामिंग में, सामंजस्य उस डिग्री को संदर्भित करता है जिससे एक मॉड्यूल के तत्व एक साथ होते हैं। इस प्रकार, सामंजस्य किसी दिए गए मॉड्यूल के भीतर कार्यक्षमता के टुकड़ों के बीच संबंधों की ताकत को मापता है। उदाहरण के लिए, अत्यधिक सामंजस्यपूर्ण प्रणालियों में कार्यक्षमता दृढ़ता से संबंधित है।
युग्मन:
यह बहुत से असंबंधित वर्गों को एक साथ जोड़े भी है क्योंकि वे सभी संदर्भित फ़ाइलों को समाप्त करते हैं जो वास्तव में वे क्या करते हैं, इससे संबंधित नहीं हैं।
चुस्त युग्मन तब होता है जब वर्गों का एक समूह एक दूसरे पर अत्यधिक निर्भर होता है। यह परिदृश्य तब उत्पन्न होता है जब कोई वर्ग बहुत अधिक जिम्मेदारियों को स्वीकार करता है, या जब एक चिंता अपने स्वयं के वर्ग होने के बजाय कई वर्गों में फैल जाती है।
यदि आप एक का उपयोग किया है बेहतर नाम की तरह DELIMITER = ','
आप अभी भी क्योंकि नाम सामान्य है और कोई अर्थ वहन करती है, एक ही समस्या के लिए होगा। मान को पुन: असाइन करना शाब्दिक के लिए खोज और प्रतिस्थापन की तुलना में प्रभाव विश्लेषण करने में मदद करने के लिए और अधिक नहीं है ','
। क्योंकि कुछ कोड क्या इसका उपयोग करता है और उसे ,
और कुछ अन्य कोड का उपयोग करने की आवश्यकता होती है, लेकिन ;
अब आवश्यकता है? अभी भी मैन्युअल रूप से हर उपयोग को देखना होगा और उन्हें बदलना होगा।
जंगल में:
मैंने हाल ही में एक 1,000,000+ LOC
एप्लीकेशन को रिफ्लेक्ट किया जो 18 साल की थी। जैसी बातें थीं public static final COMMA = SPACE + "," + SPACE;
। यह किसी भी तरह से बेहतर नहीं है, " , "
जहां इसकी जरूरत है।
यदि आप पठनीयता पर बहस करना चाहते हैं, तो आपको अपने IDE को whitespace
उन वर्णों को प्रदर्शित करने के लिए कॉन्फ़िगर करने की आवश्यकता है, जहाँ आप उन्हें या जो कुछ भी देख सकते हैं, वह सिस्टम में एन्ट्रापी शुरू करने का सिर्फ एक बहुत ही आलसी कारण है।
इसने कई संकुल और कक्षाओं में ,
शब्द के कई गलत वर्तनी के साथ कई बार परिभाषित किया था COMMA
। कोड में एक साथ intermixed सभी विविधताओं के संदर्भ में। यह पूरी तरह से असंबंधित कुछ को तोड़ने के बिना कुछ को ठीक करने और ठीक करने के लिए किसी बुरे सपने से कम नहीं था ।
वर्णमाला के साथ एक ही, एक से अधिक थे UPPER_CASE_A
, A
, UPPER_A
, A_UPPER
कि समय के सबसे अधिक के बराबर थे A
लेकिन कुछ मामलों में नहीं थे । लगभग हर किरदार के लिए, लेकिन सभी किरदार नहीं।
और संपादित इतिहासों से ऐसा नहीं लगता था कि इनमें से एक को भी कभी भी संपादित किया गया था या 18 वर्षों में बदल दिया गया था, क्योंकि अब जो होना चाहिए उसका स्पष्ट कारण यह है कि इससे बहुत सारी चीजें टूट सकती हैं जो अप्राप्य थीं, इस प्रकार आपके पास नया चर है एक ही चीज़ की ओर इशारा करते हुए नाम जो एक ही कारण से कभी नहीं बदले जा सकते।
बिना किसी वास्तविकता के आप यह तर्क नहीं दे सकते हैं कि यह अभ्यास कुछ भी नहीं कर रहा है बल्कि अधिकतम एन्ट्रापी पर शुरू हो रहा है।
मैंने इस सारे गड़बड़झाले को नकार दिया और सभी ताने-बाने को झुका दिया और नए कॉलेज के काम बहुत अधिक उत्पादक थे क्योंकि उन्हें अप्रत्यक्ष स्तर के कई स्तरों के माध्यम से शिकार नहीं करना पड़ता था जो इन const
संदर्भों ने वास्तव में इंगित किया था, क्योंकि वे उस नाम में विश्वसनीय नहीं थे। बनाम वे जो निहित थे।