याद रखने वाली सबसे महत्वपूर्ण बात यह है कि वे दिशा-निर्देश हैं, नियम नहीं।
ऐसे मामले हैं जहां एक विधि को बस एक तर्क लेना चाहिए । +संख्याओं के लिए विधि के बारे में सोचें , उदाहरण के लिए। या addसंग्रह के लिए विधि।
वास्तव में, कोई यह भी तर्क दे सकता है कि दो संख्याओं को जोड़ने का क्या मतलब है, संदर्भ पर निर्भर है, उदाहरण के लिए even 3 + 3 == 6, लेकिन the | 5 में 3 + 3 == 2 , इसलिए वास्तव में अतिरिक्त संचालक एक संदर्भ वस्तु पर एक विधि होनी चाहिए जो एक तर्क के बजाय दो तर्क लेती है। संख्याओं पर विधि जो एक तर्क लेती है।
इसी तरह, दो वस्तुओं की तुलना करने के लिए एक विधि या तो एक वस्तु का एक तरीका होना चाहिए, दूसरे को तर्क के रूप में लेना चाहिए, या संदर्भ की एक विधि, दो वस्तुओं को तर्क के रूप में लेना चाहिए, इसलिए इसका तुलनात्मक विधि के साथ कोई मतलब नहीं है एक से कम तर्क।
उन्होंने कहा, एक विधि के लिए तर्कों की संख्या को कम करने के लिए कुछ चीजें की जा सकती हैं:
- विधि को स्वयं छोटा करें : हो सकता है, यदि विधि को कई तर्कों की आवश्यकता है, तो यह बहुत अधिक कर रहा है?
- एक लापता अमूर्त : यदि तर्क बारीकी से सहसंबद्ध हैं, हो सकता है कि वे एक साथ हों, और एक अमूर्त आप गायब हैं? (कैननिकल टेक्स्ट बुक उदाहरण: दो निर्देशांक के बजाय, एक
Pointऑब्जेक्ट पास करें , या उपयोगकर्ता नाम और ईमेल पास करने के बजाय, एक IdCardऑब्जेक्ट पास करें ।)
- ऑब्जेक्ट स्टेट : यदि तर्क को कई तरीकों की आवश्यकता होती है, तो शायद यह ऑब्जेक्ट स्टेट का हिस्सा होना चाहिए। यदि यह केवल कुछ विधियों की आवश्यकता है, लेकिन दूसरों की नहीं है, तो शायद ऑब्जेक्ट बहुत अधिक कर रहा है और वास्तव में दो ऑब्जेक्ट होना चाहिए।
एक तरीका यह है कि तर्कों को एक नए वर्ग में शामिल किया जाए, लेकिन इससे कक्षाओं का विस्फोट ज़रूर होगा?
यदि आपके डोमेन मॉडल में कई अलग-अलग प्रकार की चीजें हैं, तो आपका कोड कई अलग-अलग प्रकार की वस्तुओं के साथ समाप्त हो जाएगा। इसमें कुछ भी गलत नहीं है।
और उन वर्गों के नाम के साथ समाप्त होने की संभावना है जो कुछ नामकरण नियमों का उल्लंघन करते हैं ("डेटा" या "जानकारी" आदि के साथ समाप्त)?
यदि आपको कोई उचित नाम नहीं मिल रहा है, तो हो सकता है कि आपने या तो बहुत सारे तर्कों को एक साथ रखा हो या बहुत कम। तो, आपके पास या तो एक वर्ग का एक टुकड़ा है या आपके पास एक से अधिक वर्ग हैं।
एक अन्य तकनीक है, कई कार्यों के लिए उपयोग किए जाने वाले चर को एक निजी सदस्य चर बनाने के लिए उन्हें पास करने से बचने के लिए, लेकिन यह चर के दायरे का विस्तार करता है, संभवतः ऐसा है कि यह उन कार्यों के लिए खुला है जिन्हें वास्तव में इसकी आवश्यकता नहीं है।
यदि आपके पास सभी विधियों का एक समूह है, जो सभी समान तर्कों पर काम करते हैं, और विधियों का एक और समूह जो नहीं करते हैं, हो सकता है कि वे विभिन्न वर्गों में हों।
ध्यान दें कि मैंने "शायद" शब्द का कितनी बार उपयोग किया है? इसलिए वे दिशा-निर्देश हैं, नियम नहीं। हो सकता है कि 4 मापदंडों वाला आपका तरीका पूरी तरह से ठीक हो!