एसआरपी कक्षाओं पर लागू होता है, तरीकों से नहीं। फिर भी, यह एक अच्छा विचार है कि वे केवल एक चीज करें। लेकिन आप इसे चरम पर नहीं ले जा सकते हैं। उदाहरण के लिए, एक कंसोल एप्लिकेशन काफी बेकार होगा यदि इसकी मुख्य विधि में केवल एक कथन हो सकता है (और, यदि कथन एक विधि कॉल है, तो उस विधि में केवल एक कथन भी शामिल हो सकता है)।
IsNullOrEmpty के कार्यान्वयन के बारे में सोचो:
static bool IsNullOrEmpty(string s)
{
return ReferenceEquals(s, null) || Equals(s, string.Empty);
}
तो, हाँ, यह दो बातें कर रहा है, लेकिन वे एक ही अभिव्यक्ति में काम हो गया। आप अभिव्यक्ति के स्तर, पर जाएँ किसी भी बूलियन द्विआधारी बूलियन ऑपरेटरों को शामिल अभिव्यक्ति "एक से अधिक बात कर" क्योंकि वह एक से अधिक शर्त की सच्चाई मूल्यांकन कर रही है कहा जा सकता है।
यदि विधियों के नाम आपको परेशान करते हैं क्योंकि वे एक ही विधि के लिए बहुत अधिक गतिविधि का संकेत देते हैं, तो उन्हें अपने स्वयं के तरीकों से नामों के साथ लपेटें जो एक शर्त के मूल्यांकन को दर्शाते हैं। उदाहरण के लिए:
static bool HasNoVisibleCharacters(string s) { return string.IsNullOrWhitespace(s); }
static bool HasNoCharacters(string s) { return string.IsNullOrEmpty(s); }
अपनी टिप्पणी के जवाब में:
कहते हैं कि मैं SerilizeAndValidate (ObjectToSerilizeAndValidate) की तरह समारोह में लिखा है, स्पष्ट रूप से इस विधि/वर्ग, स्पष्ट रूप से एक 2 बातें, क्रमानुसार और मान्यता, क्या कर रहा है उल्लंघन, एक कक्षा में कुछ समय के तरीकों serialize और सत्यापन
हाँ, आप इस बारे में चिंतित होने का अधिकार नहीं है की उपरोक्त उदाहरण की तरह रखरखाव दुःस्वप्न की ओर जाता है, लेकिन फिर, आप सचमुच तरीकों है कि नहीं हो सकता केवल एक चीजयाद रखें कि विभिन्न विधियां अमूर्तता के विभिन्न स्तरों से निपटेंगी। आपके पास बहुत उच्च स्तरीय विधि हो सकती है जो क्रियाओं के लंबे अनुक्रम के हिस्से के रूप में SerializeAndValidate
पर कॉल करती है। अमूर्तता के उस स्तर पर, SerializeAndValidate
को एक ही क्रिया के रूप में सोचना बहुत उचित हो सकता है।
एक फ़ाइल के "गुण" संवाद खोलने के लिए एक अनुभवी उपयोगकर्ता के लिए कदम दर कदम निर्देश का एक सेट लेखन कल्पना कीजिए:
- राइट-क्लिक करें फ़ाइल
- चुनें "गुण"
जब हम कंप्यूटर प्रोग्राम लिखना जारी है, हम अमूर्त की दोनों स्तर पर संचालित करने के लिए की जरूरत है। या, किसी भी समय, हम एक स्तर के अमूर्त या दूसरे स्तर पर परिचालन कर रहे हैं, ताकि हम खुद को भ्रमित न करें। इसके अलावा, हम लाइब्रेरी कोड पर भरोसा करते हैं जो अभी भी अमूर्तता के निचले स्तर पर संचालित होता है।
तरीके आपको "खुद को दोहराएं" सिद्धांत (अक्सर "DRY" के रूप में जाना जाता है) का अनुपालन करने की अनुमति देता है। यदि आपको अपने आवेदन के कई हिस्सों में वस्तुओं को क्रमबद्ध और मान्य करने की आवश्यकता है, तो आप डुप्लीकेटिव कोड को कम करने के लिए SerializeAndValidate
विधि चाहते हैं। आप बहुत अच्छी तरह से एक सरल सुविधा पद्धति के रूप में विधि को लागू करने की सलाह दी जा चाहते हैं:
void SerializeAndValidate(SomeClass obj)
{
Serialize(obj);
Validate(obj);
}
यह आप एक विधि को बुलाने की सुविधा की अनुमति देता है, जबकि मान्यता तर्क से क्रमबद्धता तर्क की जुदाई, जो कार्यक्रम बनाना चाहिए संरक्षण बनाए रखने के लिए आसान है।
इसे ओवरथिंक न करें, ये कार्य ठीक हैं। – ken2k
:), बिल्कुल, आप सही हैं लेकिन कभी-कभी यह मुझे बहुत भ्रमित करता है इसलिए मैंने इस बार सोचा, मैं industroy विशेषज्ञों से पूछता हूं। – TalentTuner
मुझे लगता है कि इन 2 कार्यों में कुछ भी पैटर्न जोड़ने से आपके कोड की भ्रम और पठनीयता बढ़ जाती है। बस इसे सरल रखें (बेवकूफ) – Alex