2012-03-12 12 views
7

मैं एक डेटाबेस से डेटा खींचने के लिए एक विधि है, और मैं इसे इस प्राप्त करना चाहते हैं:नामकरण जटिल तरीकों

पांच की सीमा प्रविष्टियों, आइटम प्रकार न्यूज़लेटर है, सक्रिय होने के लिए PublishDate < दिनांक समय की जरूरत है (। अब)

तो मैं यह नामकरण GetFiveActiveNewslettersByCreatedDate की सोच रहा हूँ()

यह एक छोटे से मेरे लिए लंबे समय लगता है। मैंने इस तरह की चीजों को नाम देने के लिए साइट पर एक अच्छा तरीका देखा, आप इसे कैसे संभालेंगे?

+3

उस नाम के साथ कुछ भी गलत नहीं है, प्रति से। वैकल्पिक रूप से आपके पास एक विधि हो सकती है जो पैरामीटर के रूप में लौटने के लिए अधिकतम संख्या में ले जाती है। –

+3

हार्डकोडिंग 5 तक एक खराब अभ्यास है। मैं आपको निम्नलिखित हस्ताक्षर सुझाता हूं: 'GetActiveNewsletters (int32 आकार) ' – Oybek

+1

' ByCreatedDate' का उपयोग करके आगे अनावश्यक है, क्योंकि 'सक्रिय' पहले से ही समय के अर्थ का अर्थ रखता है। यदि आप 'ByCreatedDate' द्वारा उपयोग करेंगे, तो इसका अर्थ यह होगा कि आप एक अतिरिक्त भविष्यवाणी के साथ चयन कर रहे हैं। – Oybek

उत्तर

4

इस विशिष्ट नामकरण से बचने के लिए मैं विधि को सामान्य बनाने के बारे में सोचूंगा। कुछ की तरह:

GetNewsLetters(int amount, bool onlyActive, SortOrder orderBy) 
12

इसके बजाए ऐसा कुछ कैसे करें?

public IEnumerable<Newsletter> GetActiveNewsletters(int maxRecords = 5) 
{ 
    // ... 
} 

शीर्ष 5 अभी भी डिफ़ॉल्ट है, लेकिन यह अब अत्यधिक विशिष्ट नहीं है।

+4

मैं सार्वजनिक डिफ़ॉल्ट मानकों के खिलाफ सलाह दूंगा क्योंकि वे कॉलिंग असेंबली में संकलित हो जाते हैं, जो सूक्ष्म बग का कारण बन सकता है यदि कॉल किए गए असेंबली को बिना कॉल करने और सभी कॉलर्स को फिर से तैनात किए बिना अद्यतन किया जाता है। –

+0

@ माइकलस्टम: अच्छा बिंदु। मुझे लगता है कि यह स्थिति पर निर्भर करता है। कई/अधिकतर अनुप्रयोगों के लिए यह शायद एक मुद्दा नहीं है क्योंकि यह सार्वजनिक एपीआई की तरह कुछ होगा। '/// सारांश' का उल्लेख करने के लिए –

1

मैं parametrized विधि जोड़ना होगा, जैसे

GerEntries(T typeofEntity, DateTime date, int maxNumber)

और टिप्पणी

साथ स्वाभाविक रूप से दस्तावेज़ विधि
5

मैं करने के लिए इसका नाम की सिफारिश करेंगे: GetNewsletters(int recordCount=5) समाचार पत्र की संख्या विधि के लिए एक पैरामीटर होगा ।

बाकी को ///Summary में माना और वर्णित किया जा सकता है।

+1

+1 – Oybek

2

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

आपके विशिष्ट उदाहरण के लिए, मुझे आपके द्वारा दिए गए नाम से कोई समस्या नहीं है।

8

कारण मैं व्यक्तिगत रूप से "पांच" बेकिंग से बचने का कारण हूं, यह लाइन के नीचे क्या हो सकता है।

उदाहरण के लिए, यदि बाद में, 5 के बजाय कुछ परिदृश्यों में 10 न्यूज़लेटर्स की कुछ मांग थी? खैर, आप एक अतिरिक्त विधि GetTenActiveNewslettersByCreatedDate() बनायेंगे। और अब, आपके पास एक 'डिज़ाइन पैटर्न' है जो बाद के डेवलपर्स का पालन करेगा जब 20, 50, 100 न्यूजलेटर की आवश्यकता होती है। यह एक ऐसा डिज़ाइन है जो सड़ जाएगा, और आप पांच को पैरामीटर करके इसे रोक सकते हैं।

बेशक, यह यागनी/सट्टा सामान्यता हो सकती है। यदि 5 वास्तव में कुछ प्रकार का जादू है, कड़ी मेहनत से, कभी भी नियम नहीं बदलेगा, तो आप इसे सावधानी से सेंकना चाहेंगे। मुझे लगता है कि मुझे ऐसा करने से खेद है और अब तक की तरह चीजें देख रही हैं।

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