क्या सभी मैजिक नंबर एक ही हैं?


77

हाल ही में एक परियोजना पर, मुझे बाइट्स से किलोबाइट्स किबिबाइट में परिवर्तित करने की आवश्यकता थी । कोड काफी सीधा था:

var kBval = byteVal / 1024;

यह लिखने के बाद, मुझे काम करने का बाकी काम मिल गया और आगे बढ़ गया।

लेकिन बाद में, मुझे आश्चर्य हुआ कि क्या मैंने अपने कोड के भीतर एक जादुई संख्या को एम्बेड किया था । मेरा एक हिस्सा कहता है कि यह ठीक था क्योंकि संख्या एक स्थिर स्थिरांक है और इसे आसानी से समझा जाना चाहिए। लेकिन मेरे एक और हिस्से को लगता है कि अगर यह एक परिभाषित स्थिरांक में लिपटा होता तो सुपर स्पष्ट होता BYTES_PER_KBYTE

तो क्या ऐसी संख्याएँ हैं जो अच्छी तरह से ज्ञात स्थिरांक हैं जो वास्तव में जादुई हैं या नहीं?


संबंधित सवाल:

एक संख्या एक जादू नंबर कब है? और क्या कोड के हर नंबर को "मैजिक नंबर" माना जाता है? - समान हैं, लेकिन जितना मैं पूछ रहा हूं उससे कहीं अधिक व्यापक प्रश्न हैं। मेरा सवाल अच्छी तरह से ज्ञात निरंतर संख्याओं पर केंद्रित है जो उन सवालों में संबोधित नहीं है।

जादू की संख्या को खत्म करना: "ना" कहने का समय कब है? भी संबंधित है, लेकिन एक निरंतर संख्या एक जादू की संख्या है या नहीं, इसका विरोध करने पर ध्यान केंद्रित किया जाता है।


17
मैंने वास्तव में एक ऐसी परियोजना पर काम किया है, जहाँ उन्होंने जैसे स्थिरांक बनाए थे FOUR_HUNDRED_FOUR = 404। मैंने एक और परियोजना पर काम किया, जहाँ वे शाब्दिक के बजाय निरंतर तार का उपयोग करने के बारे में उग्रवादी थे, इसलिए उनके पास कोड में दर्जनों लाइनें थीं जो दिखती थीं,DATABASE = "database"
Rob

82
निश्चित रूप से उपयोग करें 1024, क्योंकि अन्यथा आपकी देव टीम यह सब समय व्यतीत करने के बारे में बहस करेगी यह "किलोबाइट्स" या "किबिबाइट्स" है।
स्टीवन बर्नैप

6
आप विचार कर सकते हैं कि 1024 kibi है और #define KIBI1024 के रूप में 1024, MEBI1024 * 1024 के रूप में है
ysdx

6
@ रब वाई: अच्छे पुराने फोरट्रान प्रोग्रामर की तरह लगता है। क्योंकि उस प्रोग्रामिंग लैंग्वेज ने प्रोग्रामर्स को ऐसा करने के लिए मजबूर कर दिया था। हां, वहां आपको कॉन्स्टेंट दिखाई देंगे जैसे ZERO=0, ONE=1, TWO=2और जब प्रोग्राम अन्य भाषाओं में पोर्ट किए जाते हैं (या प्रोग्रामर अपनी भाषा को स्विच करते समय व्यवहार नहीं बदलते हैं) तो आप इसे वहां भी देखेंगे और आपको प्रार्थना करनी होगी कि इसे कभी भी किसी को न बदलें ONE=2...
Holger

4
@NoctisSkytower मेरी टीम उन भाषाओं के कारण और उनमें संभावित असंगत कार्यान्वयन के कारण बिट शिफ्टिंग ऑपरेटरों के बजाय स्पष्ट विभाजन के बयानों का उपयोग करना पसंद करती है। इसी तरह, नकारात्मक मूल्यों को असंगत रूप से बिटवाइज़ शिफ्टिंग के साथ नियंत्रित किया जाता है। जबकि हमारे पास आवश्यक रूप से नकारात्मक बाइट मूल्य नहीं हो सकते हैं, हम निश्चित रूप से माप की अन्य इकाइयों के साथ नकारात्मक मान रखते हैं जो हम परिवर्तित करते हैं।

जवाबों:


103

सभी मैजिक नंबर एक जैसे नहीं होते हैं।

मुझे लगता है कि उदाहरण में, यह निरंतर ठीक है। मैजिक नंबरों के साथ समस्या यह है कि जब वे जादू करते हैं, तो यह स्पष्ट नहीं होता है कि उनकी उत्पत्ति क्या है, क्यों मूल्य क्या है, या मूल्य सही है या नहीं।

BYTES_PER_KBYTE के पीछे 1024 छुपाने का मतलब यह भी है कि आप सही हैं या नहीं, इसे तुरंत नहीं देखें।

मैं किसी से तुरंत यह जानने की उम्मीद करूंगा कि मूल्य 1024 क्यों है। दूसरी ओर, यदि आप बाइट्स को मेगाबाइट में परिवर्तित कर रहे थे, तो मैं निरंतर BYTES_PER_MBYTE या इसी तरह परिभाषित करूंगा क्योंकि निरंतर 1,048,576 स्पष्ट नहीं है कि इसका 1024 ^ 2, या यह सही है।

वही उन मूल्यों के लिए जाता है जो आवश्यकताओं या मानकों द्वारा निर्धारित होते हैं, जिनका उपयोग केवल एक ही स्थान पर किया जाता है। मुझे लगता है कि संबंधित स्रोत के लिए एक टिप्पणी के साथ बस निरंतर अधिकार रखना आसान है ताकि इसे कहीं और परिभाषित करने और दोनों हिस्सों का पीछा करने की तुलना में आसान हो, जैसे:

// Value must be less than 3.5 volts according to spec blah.
SomeTest = DataSample < 3.50

मुझे इससे बेहतर लगता है

SomeTest = DataSample < SOME_THRESHOLD_VALUE

केवल जब SOME_THRESHOLD_VALUEकई स्थानों में उपयोग किया जाता है तो ट्रेडऑफ एक राय को परिभाषित करने के लिए लायक हो जाता है, मेरी राय में।


67
"जादू की संख्या के साथ समस्या तब होती है जब वे जादू होते हैं" - यह उस अवधारणा की ऐसी शानदार व्याख्या है! मैं गंभीर हूँ! अकेले उस वाक्य के लिए +1।
जोर्ग डब्ल्यू मित्तग

20
यहाँ एक मैं अभी आया हूँ: "यह समस्या नहीं है, यह जादू है।"
जोर्ग डब्ल्यू मित्तग

10
1024 किसके लिए स्पष्ट है? क्या हर जादू की संख्या का औचित्य नहीं है? सभी जादू संख्याओं का उपयोग किया जाता है क्योंकि वे स्पष्ट हैं कि जिसने भी उन्हें लिखा है। 9.8 भी स्पष्ट नहीं है? मेरे लिए यह बहुत स्पष्ट है कि यह पृथ्वी पर गुरुत्वाकर्षण का त्वरण है, लेकिन मैं फिर भी लगातार बनाऊंगा, क्योंकि जो मेरे लिए स्पष्ट है वह किसी और के लिए स्पष्ट नहीं हो सकता है।
ट्यूलेंस कोरडोवा

15
नहीं, आपके "बेहतर" उदाहरण में एक टिप्पणी एक विशाल लाल झंडा है। यह कोड है जो उस समय इसे लिखने वाले व्यक्ति की पठनीयता परीक्षा पास नहीं करता है। मैं एक उदाहरण दूंगा। e^i*pi = -1की तुलना में कहीं अधिक स्पष्ट (बेहतर) है 2.718^i*3.142 = -1। विविधताएं मायने रखती हैं और वे केवल आम कोड के लिए नहीं हैं। पहले पढ़ने के लिए कोड लिखा जाता है, दूसरे का संकलन। इसके अलावा, चश्मा बदल जाता है (बहुत कुछ)। हालांकि 1024 शायद विन्यास में नहीं होना चाहिए जैसा कि यह होना चाहिए।
नाथन कूपर

51
मैं 1024 ^ 2 के लिए एक स्थिरांक का उपयोग नहीं करेगा; 1024*1024plz!
कक्षा

44

जादू के नंबरों की बात आने पर मैं दो सवाल पूछता हूं।

क्या नंबर का कोई नाम है?

नाम उपयोगी हैं क्योंकि हम नाम पढ़ सकते हैं और इसके पीछे की संख्या के उद्देश्य को समझ सकते हैं। यदि नाम बदलने की संख्या और निरंतर नाम संक्षिप्त है, तो नामकरण स्थिरांक पठनीयता बढ़ा सकता है।

स्पष्ट रूप से, स्थिरांक जैसे कि पी, ई, एट अल। सार्थक नाम हैं। एक मूल्य जैसे कि 1024 हो सकता है, BYTES_PER_KBलेकिन मैं यह भी उम्मीद करूंगा कि कोई भी डेवलपर जानता होगा कि 1024 का मतलब क्या है। स्रोत कोड के लिए इच्छित दर्शक पेशेवर प्रोग्रामर हैं जिनके पास दो की विभिन्न शक्तियों को जानने के लिए पृष्ठभूमि होनी चाहिए और उनका उपयोग क्यों किया जाता है।

क्या इसका उपयोग कई स्थानों पर किया जाता है?

जबकि नाम स्थिरांक की एक ताकत हैं, एक और पुन: प्रयोज्य है। यदि कोई मान बदलने की संभावना है, तो इसे कई स्थानों पर शिकार करने की आवश्यकता के बजाय एक स्थान पर बदला जा सकता है।

आपका प्रश्न

आपके प्रश्न के मामले में, मैं संख्या का उपयोग इस प्रकार करूंगा।

नाम: उस संख्या का एक नाम है, लेकिन यह वास्तव में उपयोगी नहीं है। यह किसी भी आवश्यकता दस्तावेज़ में निर्दिष्ट गणितीय निरंतरता या मूल्य का प्रतिनिधित्व नहीं करता है।

स्थान: भले ही कई स्थानों पर उपयोग किया जाता है, यह कभी भी नहीं बदलेगा, इस लाभ को नकारते हुए।


1
जादू की संख्या के बजाय स्थिरांक का उपयोग करने का कारण केवल यह नहीं है कि संख्याएं बदल जाएंगी, यह पठनीयता और स्व-प्रलेखन के लिए भी है।
ट्यूलेंस कोरडोवा

4
@ user61852: नामित स्थिरांक हमेशा अधिक पठनीय नहीं होते हैं। वे अक्सर होते हैं, लेकिन हमेशा नहीं।
whatsisname

2
व्यक्तिगत रूप से, मैं इसके बजाय इन दो प्रश्नों का उपयोग करता हूं: "क्या यह मूल्य कभी भी कार्यक्रम के जीवनकाल में बदल जाएगा?" और "क्या मुझे उम्मीद है कि इस सॉफ़्टवेयर पर काम करने वाले डेवलपर्स समझेंगे कि यह संख्या किस लिए है?"
स्टीवन बर्नैप

4
आप Y2K समस्या का मतलब है? मुझे यकीन नहीं है कि यह यहां प्रासंगिक है। हाँ, 'तारीख - 1900' जैसे बहुत सारे कोड थे, लेकिन उस कोड में, मुसीबत जादू की संख्या "1900" नहीं थी।
स्टीवन बर्नैप

1
यह उत्तर एक उल्लेख से लाभान्वित हो सकता है, कि कुछ "स्पष्ट" संख्या, 1024 निश्चित रूप से एक है, ऐसे हैं कि अन्य डेवलपर्स बहुत आसानी से उन्हें संख्या के रूप में लिखने की संभावना रखते हैं, यहां तक ​​कि जब कोई उनके लिए नामित स्थिरांक को परिभाषित करता है। यदि मैं पहले से ही नहीं जानता था कि एक है, तो मुझे 1024 में बाइट राशि रूपांतरण में 1024 का उपयोग करने की आवश्यकता है, मैं एक के लिए सबसे संभावित रूप से मौजूदा निरंतर के लिए स्रोत कोड की खोज करने के बारे में नहीं सोचूंगा।
हाइड

27

यह उद्धरण

यह समस्या की संख्या नहीं है, यह जादू है।

के रूप में कहा द्वारा जोर्ग डब्ल्यू Mittag काफी अच्छी तरह से इस सवाल का जवाब देता है।

कुछ संख्याएँ केवल किसी विशेष संदर्भ में जादुई नहीं हैं। प्रश्न में दिए गए उदाहरण में, माप की इकाइयों को चर नामों से निर्दिष्ट किया गया था और जो ऑपरेशन हो रहा था वह काफी स्पष्ट था।

इसलिए 1024यह जादुई नहीं है क्योंकि संदर्भ यह स्पष्ट करता है कि रूपांतरण के लिए उपयोग करने के लिए यह उचित, निरंतर मूल्य है।

इसी तरह, का एक उदाहरण:

var numDays = numHours / 24; 

समान रूप से स्पष्ट और जादुई नहीं है क्योंकि यह अच्छी तरह से ज्ञात है कि दिन में 24 घंटे होते हैं।


21
लेकिन ... लेकिन ... 24 बदल सकते हैं! पृथ्वी अपने रोटेशन को धीमा कर रही है और अंत में 25 घंटे का समय होगा! (निश्चित रूप से हम सभी तब तक मर चुके होंगे, उस सॉफ्टवेयर का रखरखाव किसी और की समस्या बना देगा)

14
आपके सॉफ्टवेयर के मंगल पर तैनात होने के बाद क्या होता है ? आपको उस स्थिरांक पर इंजेक्शन लगाना चाहिए ...
Durron597

8
@ durron597: क्या होगा अगर आपका कार्यक्रम उस समय के दौरान पृथ्वी को धीमा करने के लिए काफी लंबा चलता है । आपको एक स्थिरांक इंजेक्ट नहीं किया जाना चाहिए, बल्कि एक फ़ंक्शन जो टाइमस्टैम्प स्वीकार करता है (अब डिफ़ॉल्ट) और दिन में घंटों की संख्या देता है जो टाइमस्टैम्प गिरता है ;-)
स्टीव जेसप

13
हां आपको YAGNI सीखने की आवश्यकता होगी।
whatsisname

3
@ durron597 मंगल पर आपके टाइमकीपिंग सॉफ़्टवेयर को तैनात करने पर कुछ भी विशेष नहीं होता है, क्योंकि कन्वेंशन द्वारा मंगल के दिन 24 घंटे लंबे होते हैं, लेकिन प्रत्येक घंटे पृथ्वी पर इसकी तुलना में 2.7% अधिक लंबा होता है । बेशक, न तो पृथ्वी का नाक्षत्र दिवस और न ही पृथ्वी का सौर दिवस ठीक 24 घंटे है (सटीक संख्या उसी पृष्ठ पर हैं), तो आप 24 वैसे भी उपयोग नहीं कर सकते हैं ! इज़कट की तरह, लीप सेकंड में चोट लगी। शायद आपके पास बेहतर भाग्य होगा जो 24पृथ्वी पर मंगल ग्रह की तुलना में निरंतर उपयोग कर रहा है !
एक CVn

16

अन्य पोस्टरों में उल्लेख किया गया है कि जो रूपांतरण हो रहा है वह 'स्पष्ट' है, लेकिन मैं असहमत हूं। मूल प्रश्न, समय पर इस बिंदु में शामिल हैं:

किलोबाइट्स किबिबाइट्स

तो पहले से ही मुझे पता है कि लेखक है या भ्रमित था। विकिपीडिया पृष्ठ भ्रम में जोड़ता है:

1000 = KB kilobyte (metric)
1024 = kB kilobyte (JEDEC)
1024 = KiB kibibyte (IEC)

इसलिए "किलोबाइट" का उपयोग 1000 और 1024 दोनों के कारक के रूप में किया जा सकता है, शॉर्टहैंड में एकमात्र अंतर 'के' के कैपिटलाइज़ेशन का है। उसके ऊपर, 1024 का मतलब किलोबाइट (JEDEC) या kibibyte (IEC) हो सकता है। एक सार्थक नाम के साथ एक निरंतरता के साथ उस भ्रम के सभी को क्यों नहीं बिखरते? BTW, इस धागे ने अक्सर "BYTES_PER_KBYTE" का उपयोग किया है, और यह कम अस्पष्ट नहीं है। KBYTE: क्या यह KIBIBYTE या KILOBYTE है? मैं JEDEC ध्यान न दें और कराना पसंद करते हैं BYTES_PER_KILOBYTE = 1000और BYTES_PER_KIBIBYTE = 1024। कोई और भ्रम नहीं।

मेरे जैसे लोगों और कई अन्य लोगों के बाहर होने का कारण, 'उग्रवादी' (यहां एक टिप्पणीकार को उद्धृत करना) है, जो जादू की संख्याओं के नामकरण पर राय है, यह सब उस दस्तावेज के बारे में है जिसे आप करने का इरादा रखते हैं, और अस्पष्टता को दूर करते हैं। और आपने वास्तव में एक ऐसी इकाई को चुना है जिससे बहुत भ्रम पैदा हुआ है।

अगर मैं देखूँ:

int BYTES_PER_KIBIBYTE = 1024;  
...  
var kibibytes = bytes / BYTES_PER_KIBIBYTE;  

फिर यह तुरंत स्पष्ट है कि लेखक ने क्या करने का इरादा किया है, और कोई अस्पष्टता नहीं है। मैं सेकंड के एक मामले में कंटीन्यू की जांच कर सकता हूं (भले ही वह किसी अन्य फ़ाइल में हो), इसलिए भले ही वह 'तत्काल' न हो, यह तत्काल के करीब है।

अंत में, यह स्पष्ट हो सकता है जब आप इसे लिख रहे हों, लेकिन जब आप इसे बाद में वापस आएंगे तो यह कम स्पष्ट होगा, और जब कोई व्यक्ति इसे संपादित करेगा तो यह और भी कम स्पष्ट हो सकता है। एक निरंतर बनाने में 10 सेकंड लगते हैं; इकाइयों के साथ किसी समस्या को डीबग करने में आधे घंटे या उससे अधिक का समय लग सकता है (कोड आपको बाहर कूदने नहीं जा रहा है और आपको बताएगा कि इकाइयाँ गलत हैं, आपको यह पता लगाने के लिए गणित स्वयं करना होगा। (आप इकाइयों की जांच करने से पहले 10 अलग-अलग रास्तों का शिकार करेंगे)।


2
अच्छा काउंटर जवाब। यदि आप व्यक्तिगत टीम संस्कृति को ध्यान में रखते हैं तो यह अधिक मजबूत होगा। यदि आपको मेरी SE प्रोफ़ाइल पर विश्वास है , तो मैं उन विशेष मानकों को पूरा करने के लिए काफी पुराना हूं। तो केवल भ्रम "वर्तमान (गैर-) मानक शब्द क्या है?" और आप यह मानकर सुरक्षित होंगे कि मैं साथी डायनासोरों की एक टीम के साथ काम करता हूँ, जिनकी सभी शब्दावली (गैर-) मुश्किलें हैं।

@ GlenH7: IMHO, पावर ऑफ़-टू-बेस्ड यूनिट्स को स्टोरेज के लिए रखा जाना चाहिए, क्योंकि यह पावर-ऑफ़-टू साइज़ में आवंटित किया जाता है। यह न्यूनतम आबंटन का आकार 4096 बाइट्स है, क्या यह अधिक मायने रखता है कि 256 न्यूनतम-आकार की फ़ाइलों को रखने के लिए भंडारण की मात्रा के लिए एक इकाई है, या 244.140625 ऐसी फ़ाइलों को रखने के लिए आवश्यक भंडारण की मात्रा है? व्यक्तिगत रूप से, मैं हार्ड-ड्राइव-निर्माता मेगाबाइट और अन्य मेगाबाइट के बीच अंतर को टेलीविजन सेट विकर्ण इंच और वास्तविक विकर्ण इंच के बीच के अंतर के अनुरूप देखता हूं।
सुपरकैट

@ रियान: इस विशिष्ट मामले के लिए, मैं मानक इकाइयों को अपनाने के बारे में नहीं बल्कि उग्रवादी रहूंगा - केबी 1000 बाइट्स या कोड गलत है, और 1024 बाइट्स KiB है या कोड गलत है। यह एकमात्र तरीका है जिससे हम कभी भी "इकाइयां अस्पष्ट" समस्या से गुजरते हैं। "मैजिक कॉन्स्टेंट्स" (जैसे KB) को परिभाषित करने वाले अलग-अलग लोग मदद नहीं करेंगे।
ब्रेंडन

11

एक नाम को एक संख्यात्मक मान के रूप में परिभाषित करने से पता चलता है कि जब भी उस स्थान का उपयोग करने वाले एक स्थान पर एक अलग मूल्य की आवश्यकता होती है, तो संभवतः सभी में इसकी आवश्यकता होगी। यह सुझाव भी देता है कि नाम को निर्दिष्ट संख्यात्मक मान को बदलना मूल्य बदलने का एक वैध तरीका है। इस तरह के निहितार्थ उपयोगी हो सकते हैं जब यह सच है, और खतरनाक है जब यह गलत है।

तथ्य यह है कि दो अलग-अलग स्थानों में एक विशेष शाब्दिक मूल्य का उपयोग किया जाता है (जैसे 1024) कमजोर रूप से सुझाव देगा कि परिवर्तन जो प्रोग्रामर को बदलने के लिए प्रेरित करेगा, प्रोग्रामर को दूसरों को बदलने के लिए प्रेरित करने की कुछ हद तक प्रेरित करने की संभावना है, लेकिन यह निहितार्थ लागू होने की तुलना में बहुत कमजोर है। यदि प्रोग्रामर ने इस तरह के एक स्थिरांक को एक नाम दिया है।

ऐसा कुछ होने के साथ एक बड़ा खतरा #define BYTES_PER_KBYTE 1024यह है कि यह किसी ऐसे व्यक्ति को सुझाव दे सकता है जो सामना करता है printf("File size is %1.1fkB",size*(1.0/BYTES_PER_KBYTE));कि कोड को हजारों बाइट्स का उपयोग करने का एक सुरक्षित तरीका #defineबयान बदलना होगा । इस तरह का परिवर्तन विनाशकारी हो सकता है, हालांकि, अगर उदाहरण के लिए कुछ अन्य असंबंधित कोड किबीट्स में किसी ऑब्जेक्ट का आकार प्राप्त करता है और इसके लिए एक बफर आवंटित करते समय वह निरंतर उपयोग करता है।

यह निरंतर उपयोग करने के लिए उचित हो सकता है #define BYTES_PER_KBYTE_FOR_USAGE_REPORT 1024और #define BYTES_PER_KBYTE_REPORTED_BY_FNOBULATOR 1024, निरंतर 1024 द्वारा सेवा की जाने वाली प्रत्येक भिन्न उद्देश्य के लिए एक अलग नाम निर्दिष्ट करना, लेकिन इसके परिणामस्वरूप कई पहचानकर्ताओं को परिभाषित किया जाएगा और बिल्कुल एक बार उपयोग किया जाएगा। इसके अलावा, कई मामलों में, यह समझना सबसे आसान है कि यदि कोई कोड का उपयोग करता है, तो उसका क्या अर्थ है, और यह पता लगाना सबसे आसान है कि जहां कोड का अर्थ है कि कोई भी उपयोग किए गए किसी स्थिरांक के मूल्यों को देखता है या नहीं। यदि एक संख्यात्मक शाब्दिक का उपयोग केवल एक बार किसी विशेष उद्देश्य के लिए किया जाता है, तो उस स्थान पर शाब्दिक रूप से लिखना जहां अक्सर इसका उपयोग किया जाता है, एक लेबल को एक स्थान पर निर्दिष्ट करने और कहीं और इसके मूल्य का उपयोग करने की तुलना में अधिक समझने योग्य कोड प्राप्त होगा।


7

मैं सिर्फ संख्या का उपयोग करने की दिशा में झुकाव करूंगा, हालांकि मुझे लगता है कि एक महत्वपूर्ण मुद्दा नहीं लाया गया है: एक ही संख्या का अर्थ विभिन्न संदर्भों में अलग-अलग चीजें हो सकती हैं, और यह रिफैक्टिंग को जटिल कर सकता है।

1024 KiB प्रति MiB की संख्या भी है। मान लीजिए कि हम 1024 का उपयोग कहीं और या कई जगहों पर उस गणना का प्रतिनिधित्व करने के लिए करते हैं, और अब हमें इसके बजाय GiB की गणना करने के लिए इसे बदलने की आवश्यकता है। निरंतरता बदलना वैश्विक खोज / प्रतिस्थापन की तुलना में आसान है जहां आप गलती से कुछ स्थानों पर गलत तरीके से बदल सकते हैं, या दूसरों में इसे याद कर सकते हैं।

या यह एक आलसी प्रोग्रामर द्वारा पेश किया गया एक छोटा सा मुखौटा भी हो सकता है जिसे एक दिन अपडेट करने की आवश्यकता होती है।

यह एक संक्षिप्त उदाहरण है, लेकिन कुछ कोड आधारों में यह नई आवश्यकताओं के लिए रीफैक्टरिंग या अपडेट करने पर समस्या पैदा कर सकता है। इस विशेष मामले के लिए, हालांकि, मैं सादे संख्या को वास्तव में बुरा रूप नहीं मानूंगा, खासकर यदि आप गणना को पुन: उपयोग के लिए एक विधि में संलग्न कर सकते हैं, तो मैं शायद इसे स्वयं करूंगा लेकिन निरंतर अधिक 'सही' पर विचार करूंगा।

यदि आप नामांकित स्थिरांक का उपयोग करते हैं, हालांकि, सुपरकैट का कहना है कि यह विचार करना महत्वपूर्ण है कि क्या संदर्भ भी मायने रखता है, और यदि आपको कई नामों की आवश्यकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.