या तो क्या लाभ या हानिकारक हैं?क्या एक्शन विधि से सबसे विशिष्ट या सबसे सामान्य प्रकार वापस करना बेहतर है?
उत्तर
मेरे दिशा निर्देशों हमेशा सबसे बाहर विशिष्ट, और में सबसे अधिक सामान्य हो गया है।
अधिक सामान्य अपने डेटा प्रकार है, कम कोड यह डेटा प्रकार के बारे में जानता का उपयोग करता है। उदाहरण के लिए, यदि कोई विधि संग्रह संग्रहित करती है, तो मैं नव निर्मित संग्रह को वापस कर दूंगा। यदि यह एक आंतरिक डेटा संरचना देता है, तो मैं इसे IEnumerable<T>
तक टक्कर दूंगा।
हालांकि, अगर यह एक सरणी देता है, या List<T>
क्योंकि यह आंतरिक रूप से बनाया गया है, तो आपके डेटा को पकड़ने वाले कोड को अब आपके संग्रह पर अधिक कार्यक्षमता तक पहुंच है।
स्पेक्ट्रम का दूसरा छोर, सबसे सामान्य (सीमाओं के भीतर) डेटा प्रकार को वापस करने के लिए इसका मतलब यह होगा कि आप हमेशा IEnumerable<T>
या सभी संग्रहों के लिए समान वापस आते हैं, भले ही विधि ने आंतरिक रूप से एक नई सरणी बनाई और उसे वापस कर दिया हो। कॉलिंग कोड को अब संग्रह की सामग्री को मैन्युअल रूप से एक नई सरणी या सूची में कॉपी करना होगा, अगर कॉलिंग कोड का उपयोग करने की आवश्यकता है।
इसका मतलब अधिक है, और ज्यादातर मामलों में, अनावश्यक काम।
इनपुट के लिए, मैं सबसे सामान्य प्रकार के लिए उपयोग कर सकता हूं, इसलिए संग्रह के लिए, जब तक कि मुझे विशेष रूप से किसी सरणी या सूची या समान की आवश्यकता न हो, मैं IEnumerable<T>
स्वीकार करूंगा। ऐसा करके, मैं सुनिश्चित करता हूं कि कॉलिंग कोड के पास कम काम है। इसका मतलब यह हो सकता है कि मुझे आंतरिक रूप से कुछ काम करना है, इसलिए यह एक व्यापार-बंद है।
महत्वपूर्ण हिस्सा संतुलन तक पहुंचना है। हर समय, हर समय बहुत सामान्य या बहुत विशिष्ट मत बनो। सही प्रकार को चित्रित करें जो समझ में आता है और विचार करें कि कोड को पास करने या आपके कोड से आउटगोइंग डेटा स्वीकार करने के लिए कॉलिंग कोड को क्या करना है। कम काम, बेहतर।
आम तौर पर मैं अधिक सामान्य प्रकार के लिए जाऊंगा। इस तरह मैं किसी भी ग्राहक को तोड़ नहीं दूंगा जो रिटर्न प्रकार के बारे में जानकारी का उपयोग कर सकता है।
यदि मैं एक और सामान्य प्रकार देता हूं, तो कार्रवाई विधि के कार्यान्वयन में मैं हमेशा प्रकार को कुछ अलग कर सकता हूं। निम्नलिखित परिदृश्य पर विचार करें: आप एक कस्टम एक्शन परिणाम वापस करते हैं जो ActionResult
से प्राप्त होता है। कहीं आपके कोड बेस में कुछ ऐसा लगता है कि वापसी मूल्य MyCustomActionResult
है। उस स्थिति में यदि आपने वापसी मूल्य बदल दिया है तो आप क्लाइंट कोड तोड़ देंगे।
बीटीडब्लू: मैं वही करता हूं - सबसे उचित सामान्य प्रकार लौटा रहा हूं - सभी विधियों के लिए न केवल कार्य विधियों के लिए।
संपादित करें: कृपया ध्यान दें कि इसका मतलब यह नहीं है कि मैं object
वापस कर दूंगा। चुनौती उस प्रकार को ढूंढना है जो "सबसे उपयुक्त" अमूर्तता का प्रतिनिधित्व करती है।
- 1. सामान्य प्रकार या विधि
- 2. इष्टतम "सबसे सामान्य यूनिफायर" एल्गोरिदम क्या है?
- 3. स्कैला का सबसे सस्ता प्रकार क्या है?
- 4. उपयोग करने के लिए बेहतर क्या है: एक्शन बनाम एक्शनलिस्टर?
- 5. विधि से दो मान वापस करने का सबसे अच्छा तरीका क्या है?
- 6. timsort सामान्य उद्देश्य या पायथन-विशिष्ट है?
- 7. सबसे सामान्य पायथन प्रकार क्या है जिसमें मैं गुण जोड़ सकता हूं?
- 8. सबसे तेज़ प्रकार तुलना?
- 9. सामान्य रूप से स्प्रिंग एओपी या एओपी सीखने का सबसे अच्छा तरीका क्या है?
- 10. वेब सेवा/डब्ल्यूसीएफ सेवा, क्या डेटासेट वापस करना बेहतर है?
- 11. विधि से बेनामी प्रकार वापस करने का कोई तरीका है?
- 12. क्या कोई अच्छा कारण है कि 'deleteBy` का सबसे सामान्य प्रकार क्यों नहीं है?
- 13. सम्मिलन प्रकार बबल प्रकार से बेहतर है?
- 14. SQL सर्वर डेटाबेस में सबसे आम आईडी प्रकार कौन सा है, और कौन सा बेहतर है?
- 15. php फ़ंक्शन से HTML वापस करने का सबसे अच्छा तरीका?
- 16. क्या मुझे यूटीएफ -8 तारों को अपने सबसे सामान्य सामान्य रूप में परिवर्तित करना चाहिए?
- 17. क्या मूल्य को परिवर्तनीय या कॉल विधि के रूप में फिर से स्टोर करना बेहतर है?
- 18. सबसे अच्छा एक्सएनए ब्लॉग क्या है?
- 19. प्रकार 'टी' सामान्य प्रकार या विधि त्रुटि प्रकार में जाना जाता है
- 20. क्या एक बड़ी क्वेरी या कुछ छोटे से वापस लौटना बेहतर है?
- 21. क्या मैं विशिष्ट प्रकार पैरामीटर
- 22. सबसे बड़ा प्रकार उपलब्ध हो रहा है
- 23. कौन सा जावास्क्रिप्ट इतिहास वापस कार्यान्वयन सबसे अच्छा है?
- 24. प्रोफ़ाइल, संख्या या नाम के लिए सबसे अच्छा क्या है?
- 25. यूआरएल के लिए सबसे अच्छा कॉलम प्रकार क्या है?
- 26. सबसे तेजी से रास्ता चाबियाँ
- 27. टेस्सेक्ट के लिए सबसे अच्छा छवि इनपुट प्रकार क्या है?
- 28. सारणी वर्ग सबसे व्युत्पन्न प्रकार
- 29. विशिष्ट डेटा संरचनाओं के निर्माण के लिए बेहतर क्या है: हैशसेट या लिंक की विशिष्ट()?
- 30. टाइप अनुमान एल्गोरिदम सबसे विशिष्ट प्रकार खोजने का प्रयास क्यों करता है?
तो आप सबकुछ से 'ऑब्जेक्ट' वापस कर देते हैं? – Timwi
निश्चित रूप से नहीं। जाहिर है, मैंने अपने जवाब में यह स्पष्ट करने का प्रबंधन नहीं किया था। मैं इसे स्पष्ट करूंगा। – Manfred