वैश्विक डेटा को छिपाने के बारे में कोड पूरा करने के लेखक का क्या मतलब है?


25

कोड कम्पलीट 2 डी संस्करण के खंड 6.4 में वैश्विक डेटा को छिपाने के बारे में एक पैराग्राफ है। मुझे जिस चीज में विशेष रुचि है, वह यह है कि मैककोनेल (पुस्तक का लेखक) वैश्विक डेटा को छिपाने के लाभों का उदाहरण देता है। एक उदाहरण है जिसे मैं नहीं समझ सकता। मेरे पास पुस्तक का अंग्रेजी संस्करण नहीं है, इसलिए मैं पाठ का अनुवाद करने की कोशिश करूंगा।

वैश्विक डेटा छिपाना। (...) आप कार्यक्रम को संशोधित किए बिना डेटा की संरचना को बदल सकते हैं।

मैककॉनेल का इससे क्या मतलब है? क्या वह वैश्विक डेटा को बदलने की बात कर रहा है? यदि ऐसा है, तो जब आप उस डेटा को पुनः प्राप्त करने के तरीकों का उपयोग कर रहे हैं, तो आपको अपना कार्यक्रम क्यों नहीं बदलना पड़ेगा? या हो सकता है कि वह यहाँ कुछ और बात कर रहा हो?

अगर कोई मेरा भ्रम दूर कर सकता है तो मैं बहुत सराहना करूंगा। यदि आप एक उदाहरण भी प्रदान कर सकते हैं, तो यह बहुत अच्छा होगा (उदाहरण भयानक हैं, आप जानते हैं)।

जवाबों:


44

लेखक वैश्विक डेटा की संरचना के बारे में बात कर रहा है, और उस संरचना को बदलने से इसका उपयोग करने वाले कोड पर क्या प्रभाव पड़ेगा।

यदि वैश्विक डेटा सीधे पहुंच योग्य है, तो डेटा संरचना को बदलने से तात्पर्य है कि इसका उपयोग करने वाले सभी कोड को बदलना संभव है।

यदि वैश्विक डेटा केवल एक इंटरफेस (जैसे कार्यों का एक सेट) के माध्यम से सुलभ है, तो संरचना को बदलने का मतलब केवल इन एक्सेसरों को बदलना है। बाकी कोड को बदलना नहीं है।

जैसा कि सरल उदाहरण कोड होगा जो पूर्णांक की एक सरणी के साथ शुरू होता है ( static int[]उदाहरण के लिए कुछ जावा वर्ग में)। यदि वह सरणी विश्व स्तर पर सुलभ है, तो लोग इसे सरणी सिंटैक्स (यानी Global.cool_stuff[x] = 1;) के साथ उपयोग करना शुरू कर देंगे । यदि किसी कारण से आप उस सरणी को संग्रह प्रकार (वेक्टर, सूची, जो भी हो) में बदलना चाहते हैं, तो आपको उन सभी कोड को बदलना होगा जो वैश्विक डेटा के इस टुकड़े का उपयोग करते हैं क्योंकि यह बन गया है, कम से कम वाक्यात्मक, अमान्य।

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

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