2011-07-19 24 views
5

विस्तार विधियों के साथ हम आसानी से किसी भी प्रकार के तरीकों को जोड़ सकते हैं। जाहिर है, यह .NET के भविष्य के संस्करण में संभावना को खोलता है, विस्तार विधि को अब कॉल नहीं किया जा सकता है (उदाहरण के लिए अब प्रकार में विस्तार विधि के समान हस्ताक्षर वाले विधि शामिल हैं)।विस्तार के तरीके संगत

क्या यह चिंता का विषय होना चाहिए?

यदि हां, तो मुझे इस तरह से कैसे निपटना चाहिए और मेरे विस्तार विधियों को डिज़ाइन करना चाहिए क्योंकि कोड परिवर्तन को कम करने के लिए यह होना चाहिए?

+0

यदि आप इसके बारे में चिंतित हैं, तो एक समाधान विस्तार विधियों का उपयोग नहीं करेगा। ';)' आप जिस वर्ग को विस्तारित कर रहे हैं उससे प्राप्त हो सकते हैं और इस तरह से विधि जोड़ सकते हैं। आपको चेतावनियां मिलेंगी कि आप बाद में जोड़े गए नए तरीके को छुपा रहे हैं। या आप स्थिर विधि से 'इस' पैरामीटर संशोधक को हटा सकते हैं। –

उत्तर

6

तो ढांचा भविष्य में इतना बदल गया है बनने की कोशिश, वहाँ हमेशा संगतता समस्याओं हो जाएगा। यदि आपकी एक्सटेंशन विधि के समान नाम के साथ एक नई ढांचा विधि जोड़ा जाता है, तो यह काफी संभावना है कि उनके पास समान है, या कम से कम समान कार्यक्षमता और एक रिफैक्टरिंग वैसे भी है।

मुझे लगता है कि इस जोखिम के कारण विस्तार विधियों की शक्ति अनदेखी करने के लिए बहुत बड़ी है।

+0

मैं सहमत हूं। अपनी विस्तार विधियों को यथासंभव स्पष्ट, स्पष्ट और सीधा बनाएं। – hatchet

0

अस्पष्ट विधि नामों का उपयोग करें जो ढांचे में कभी भी उपयोग नहीं किए जाएंगे।

संपादित - शायद अस्पष्ट सबसे उपयुक्त शब्द नहीं था, सार्थक लेकिन कम आम verbage

हस्ताक्षर टकराव से बचने के लिए प्रयास कर साथ स्थानापन्न कृपया वास्तव में की परेशानी से बचने के लिए एक ही रणनीति है कोड पुनर्विक्रय (विस्तार विधि की कार्यक्षमता को मानने की आवश्यकता है और विधि की ढांचे की परिभाषा में परिवर्तित नहीं किया गया है)।

+0

मैं इसके प्रशंसक नहीं हूं। नाम स्पष्ट होना चाहिए। –

+0

सहमत हैं, उन्हें सार्थक होना चाहिए, लेकिन मुझे नहीं लगता कि सार्थक और अस्पष्टता परस्पर अनन्य होना आवश्यक है। थिसॉरस खींचें और कम आम लेकिन स्पष्ट क्रियाओं का उपयोग करें। – roken

+1

यदि आप बहुत चिंतित हैं तो आप हमेशा एक उपसर्ग जोड़ सकते हैं, जैसे Redefine के बजाय ext_Redefine। – Blam

0

मुझे डर है कि केवल एक चीज जो आप कर सकते हैं वह आपके विस्तार विधियों के लिए अद्वितीय नाम प्रदान कर रही है, इसलिए आप 100% सुनिश्चित हैं कि आपके पास कभी संघर्ष नहीं होगा।

विधि के नाम के अपनी बिल्ली के नाम जोड़ने के बारे में बात कर रहा है, बस और अधिक रचनात्मक :)

संबंधित मुद्दे