में इस लेख एलेक्स Papadimoulis द्वारा, तो आप इस टुकड़ा देख सकते हैं:
private void attachSupplementalDocuments()
{
if (stateCode == "AZ" || stateCode == "TX") {
//SR008-04X/I are always required in these states
attachDocument("SR008-04X");
attachDocument("SR008-04XI");
}
if (ledgerAmnt >= 500000) {
//Ledger of 500K or more requires AUTHLDG-1A
attachDocument("AUTHLDG-1A");
}
if (coInsuredCount >= 5 && orgStatusCode != "CORP") {
//Non-CORP orgs with 5 or more co-ins require AUTHCNS-1A
attachDocument("AUTHCNS-1A");
}
}
मैं वास्तव में इस लेख को नहीं समझता।
मैं उद्धृत करता हूं:
यदि प्रत्येक व्यवसाय नियम निरंतर कुछ कॉन्फ़िगरेशन फ़ाइल में संग्रहीत किया गया था, तो जीवन बहुत अधिक होगा (अधिक ( एसआईसी )) हर किसी के लिए सॉफ़्टवेयर को बनाए रखना मुश्किल है: बहुत सारी कोड फाइलें होंगी जो एक, बड़ी फ़ाइल (या, उलटा) साझा करती हैं छोटे विन्यास फ़ाइलों की एक पूरी); व्यावसायिक नियमों में परिवर्तन की तैनाती के लिए नए कोड की आवश्यकता नहीं है, लेकिन मैन्युअल रूप से कॉन्फ़िगरेशन फ़ाइलों को बदलना; और डिबगिंग अधिक कठिन है।
यह कॉन्फ़िगरेशन फ़ाइल में "500000" निरंतर पूर्णांक, या "AUTHCNS-1A" और अन्य स्ट्रिंग स्थिरांक होने के खिलाफ एक तर्क है।
यह एक बुरा अभ्यास कैसे हो सकता है?
इस स्निपेट में, "500000" एक संख्या नहीं है। उदाहरण के लिए, यह नहीं है:
int doubleMe(int a) { return a * 2;}
जहां 2, एक संख्या है जिसे सार करने की आवश्यकता नहीं है। इसका उपयोग स्पष्ट है, और यह उस चीज़ का प्रतिनिधित्व नहीं करता है जिसे बाद में पुन: उपयोग किया जा सकता है।
इसके विपरीत, "500000" केवल एक संख्या नहीं है। यह एक महत्वपूर्ण मूल्य है, एक जो कार्यक्षमता में एक ब्रेकपॉइंट के विचार का प्रतिनिधित्व करता है। यह संख्या एक से अधिक स्थानों पर उपयोग की जा सकती है, लेकिन यह वह संख्या नहीं है जिसका आप उपयोग कर रहे हैं; यह सीमा / सीमा रेखा का विचार है, जिसके नीचे एक नियम लागू होता है, और ऊपर दूसरा।
एक कॉन्फ़िगरेशन फ़ाइल, या यहां तक कि ए #define
, const
या जो कुछ भी आपकी भाषा प्रदान करता है, उसके मूल्य से भी बदतर है, इसका जिक्र कैसे किया जाता है ? यदि बाद में प्रोग्राम पर, या कुछ अन्य प्रोग्रामर को भी उस बॉर्डरलाइन की आवश्यकता होती है, ताकि सॉफ्टवेयर एक और विकल्प बनाए, तो आप खराब हो जाते हैं (क्योंकि जब यह बदलता है, तो कुछ भी आपको गारंटी नहीं देता है कि यह दोनों फाइलों में बदल जाएगा)। यह डिबगिंग के लिए स्पष्ट रूप से बदतर है।
इसके अलावा, यदि कल, सरकार "5/3/2050 से मांग करती है, तो आपको AUTHLDG-1A के बजाय AUTHLDG-122B को जोड़ने की आवश्यकता है", यह स्ट्रिंग स्थिरांक एक साधारण स्ट्रिंग स्थिरांक नहीं है। यह एक है जो एक विचार का प्रतिनिधित्व करता है; यह सिर्फ उस विचार का वर्तमान मूल्य है (जो कि "वह चीज है जिसे आप जोड़ते हैं यदि खाता 500k से ऊपर है")।
मुझे स्पष्ट करें। मैं यह नहीं कह रहा हूं कि लेख गलत है; मुझे यह बिलकुल समझ में नहीं आया; शायद यह बहुत अच्छी तरह से समझाया नहीं गया है (कम से कम मेरी सोच के लिए)।
मैं समझता हूं कि निरंतर, परिभाषित या कॉन्फ़िगरेशन चर के साथ हर संभव स्ट्रिंग शाब्दिक या संख्यात्मक मान को प्रतिस्थापित करना, न केवल आवश्यक है, बल्कि चीजों को ओवरक्लंप्लीकेट करता है, लेकिन यह विशेष उदाहरण इस श्रेणी के अंतर्गत नहीं आता है। आप कैसे जानते हैं कि आपको बाद में इसकी आवश्यकता नहीं होगी? या उस मामले के लिए कोई और?