2010-04-08 12 views
18

पैरामीटर की लंबी सूची के साथ विधियों को बनाने या किसी ऑब्जेक्ट में पैरामीटर को लपेटने के लिए यह बेहतर है (सर्वोत्तम अभ्यास क्या है)?क्या पैरामीटर की लंबी सूची के साथ विधियों को बनाना बेहतर है या पैरामीटर को ऑब्जेक्ट में लपेटना बेहतर है?

मेरा मतलब है कि मेरे पास गुणों की एक लंबी सूची के साथ एक ग्राहक डेटा प्रकार है और मैं एक ही समय में सभी गुणों को अद्यतन करना चाहता हूं। यह बेहतर तरह

public int Update(int id, string name, string surname, string streetAddress, string streetAddress2, string postcode, string town, string city, string nationality, string age, string gender,string job) 
{ } 

कुछ करने के लिए है या एक वस्तु के सारे गुण लपेट और

public int Update(Client client) 
{ } 

धन्यवाद

+2

दूसरे दृष्टिकोण का उपयोग करें। जिस मिनट में आप अपडेट करने के लिए कॉल लिखते हैं, आपको दिल से याद नहीं होगा कि प्रत्येक पैरामीटर क्या था। IntelliSense मदद कर सकता है, लेकिन फिर भी, जब यह उस पर चमकते समय आपके कोड को समझने की कोशिश कर रहा है तो यह भयानक है। – Abel

+0

http://stackoverflow.com/questions/439574/whats-the-best-way-to-refactor-a-method-that-has-too-many-6-parameters –

उत्तर

21

अपनी पुस्तक Refactoring में की तरह कुछ करते हैं, मार्टिन Fowler स्पष्ट रूप से लंबे समय के पैरामीटर से जुड़ी जानकारी कोड गंध के रूप में सूचीबद्ध करता है और पैरामीटर ऑब्जेक्ट का उपयोग करने के लिए इस तरह के तरीकों को दोबारा करने का सुझाव देता है।

एक भिन्नता यह पहचानने के लिए है कि कितने पैरामीटर स्वयं समूह करते हैं, और एक से अधिक पैरामीटर ऑब्जेक्ट बनाते हैं जो इस तरह के प्रत्येक समूह का प्रतिनिधित्व करते हैं।

एक पैरामीटर वस्तु का लाभ यह है कि कोड जब आप पैरामीटर एक मिलनसार नाम वस्तु दे सकते हैं अधिक पठनीय हो जाता है। यह पता चला है कि पैरामीटर ऑब्जेक्ट वास्तविक डोमेन अवधारणा का प्रतिनिधित्व करता है, और अगली चीज़ जो आप कर सकते हैं व्यवहार में बढ़ना शुरू करना है।

+0

+1 के संभावित डुप्लिकेट के लिए संभावित और डुप्लिकेट बिंदु! – Abel

1

मैं कहूंगा कि किसी ऑब्जेक्ट का उपयोग करना बेहतर है। यदि आप स्टैक ओवरफ़्लो खोजते हैं तो इस विषय के बारे में कई अन्य पोस्ट हैं

0

आपको आमतौर पर किसी ऑब्जेक्ट का उपयोग करना चाहिए। आम तौर पर जब आपके पास किसी विधि पर बड़ी संख्या में पैरामीटर होते हैं तो वे पैरामीटर एक विशेष "स्थिति" का वर्णन कर रहे हैं। आपका उदाहरण कोड बिल्कुल बताता है कि मेरा क्या मतलब है।

0

इनपुट पैरामीटर (इस मामले में समूहित) की तुलना में प्रति घटक मूल्य प्रदाता का उपयोग करने के बारे में क्या।

धन्यवाद

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