आपको GetMusic(...)
विधि का उपयोग कर डेटा मिल रहा है। यदि ऐसा है, तो संभवतः बिना किसी आवश्यकता के अतिरिक्त इकाई का उपयोग करने के लिए यह बहुत अधिक प्रयास हो सकता है।
दरअसल, एक परिस्थिति में, केवल एक इनपुट पैरामीटर कहां है, आप एक कस्टम क्लास का उपयोग कर सकते हैं। लेकिन यदि वह वर्ग उपयोग करने का एकमात्र स्थान है, तो SongSignature
वर्ग के नाम के रूप में कहता है, तो इस कक्षा के लिए विशेष रूप से का उपयोग करना होगा, यह "पैरामीटर बैग" का उपयोग करने का एक बुरा अभ्यास है, क्योंकि यह भाग्य पठनीयता है।
इसके अतिरिक्त, अगर कोई बेवकूफ कहता है कि SongSignature
एक संरचना होनी चाहिए, और उस संरचना में कुछ डेटा को विधि के अंदर बदलने के लिए एक सूचक है, तो सूचक वास्तव में कभी भी नहीं बदलेगा क्योंकि हर बार GetMusic
कहा जाता है, यह ले जाएगा संपत्ति बैग की प्रतिलिपि बनाएँ।
भले ही यह एक वर्ग है, आपको उस वर्ग के लिए public
पर एक्सेसर बदलना होगा, और सामान्य रूप से यह किसी फ़ंक्शन के लिए आगे तर्कों को पारित करने और किसी फ़ंक्शन से परिणाम प्राप्त करने का सबसे अच्छा तरीका नहीं है, क्योंकि आपके पास है पहले से ही उस विधि से एक स्ट्रीम प्राप्त हो रही है।
एक टीम एक प्रोग्रामर एक वर्ग SongRequest
साथ मानकों की जगह में है, तो दूसरा प्रोग्रामर नहीं मिला है कि यह (क्योंकि यह एक में जानकारी Lucks एक कार्यों के लिए एक पैरामीटर के रूप में इस्तेमाल किया जाता है:
के निम्न स्थिति मान लेते हैं एक वर्ग का नाम), और इसे अगले पुनरावृत्ति पर एक संरचना में बदल दिया, तीसरा प्रोग्रामर इस विधि को इस तरह से इस्तेमाल करता है, कि इसे एक वर्ग होना चाहिए (उदाहरण के लिए SongRequest
के अंदर कक्षा संदर्भों का उपयोग किया गया है) ... नतीजतन एक वास्तव में जानता था कि कुछ क्यों काम नहीं कर रहा है क्योंकि उनमें से प्रत्येक गुंबद दाएं चीज है ... पैरामीटर की निहित घोषणा के बजाय स्थानीय उपयोग के लिए कक्षा का उपयोग करने का कोई बहाना नहीं है।
आम तौर पर आप एक भविष्य में ऐसी स्थिति प्राप्त करने के लिए एक अच्छा अवसर है, क्योंकि:
- यदि आपने अपने कोड (यानी
GetMusic
)
- कोई कोड की समीक्षा करने और प्राप्त कर सकते हैं बदलता है नहीं कर रहे हैं कक्षा 'SongReqest' उपयोगी है (इसलिए स्थानीय उपयोग से कक्षा के वैश्विक उपयोग के लिए स्थिति)
SongReuest
कक्षा जोड़कर आप विधि के लिए अतिरिक्त निर्भरता जोड़ सकते हैं (क्या कोई इस वर्ग को बदलता है, संभवतः आप फाउंशन संकलित नहीं होगा)
SongRequest
का उपयोग property bag
के रूप में करता है क्योंकि यह पहले से ही एक वर्ग के रूप में उपयोग करता है, जैसा कि पहले उल्लेख किया गया है।
- इस वर्ग का उपयोग कर, आप विधि शायद केवल एक विशेष समारोह के लिए पैरामीटर प्रदान करने के लिए
SongRequest
वर्ग का उपयोग कर का हिस्सा कभी नहीं होगा यह अन्य समारोह कॉल के साथ मानकों (किस कारण से?)
- अंत में, अतिरिक्त स्मृति भूमि के ऊपर पदचिह्न देता है, क्योंकि यदि इस विधि को अक्सर कहा जाता है, तो एक तरफ, यह मेमोरी में बहुत सारी अनावश्यक वस्तुओं को कचरा इकट्ठा करना होगा, दूसरी तरफ, यदि ऐसी विधि का उपयोग शायद ही कभी किया जाता है, तो यह कक्षा बनाने के लिए व्यावहारिक नहीं होगा एक कॉल में कई चर
कक्षा का उपयोग करने के लिए केवल एक वास्तविक कारण है एक दो स्ट्रिंग तर्क: आप प्रोग्रामर ऐसी कॉल पसंद करते हैं और इस तथ्य के बावजूद कि यह बहुत व्यावहारिक और उपयोगी नहीं है, सभी कोड "पहले से अधिक सुंदर" बनाना चाहते हैं।
मैं आपको कभी ऐसा सलाह नहीं दूंगा जब तक कि आप इसे बेहतर दिखाना न पड़े।
आम तौर पर, मुझे लगता है कि किसी फ़ंक्शन के लिए तर्क पारित करने के लिए कस्टम क्लास का उपयोग करना एक बुरा अभ्यास है।
भविष्य में एक नया पैरामीटर "आसान" जोड़ने का लाभ आपको बाद में लागत का अनुबंध बदल देगा, और मौजूदा ग्राहकों को प्रभावित कर सकता है। इसलिए यदि अनुबंध बदल दिया गया है तो इसे स्पष्ट करें क्योंकि ग्राहकों को इसके बारे में पता होना चाहिए। –
सिर्फ एक अवलोकन है कि आप अपने स्वयं के/सहयोगी की राय को एक प्रमुख प्रश्न पूछने से बचने के लिए बाहर कर सकते हैं। –
नहीं। .NET ढांचा ऐसा नहीं करता है, पर्याप्त कहा। –