मान लीजिए कि मेरे पास एक फ़ंक्शन है IsAdmin
जो यह जांचता है कि उपयोगकर्ता एक व्यवस्थापक है या नहीं। यह भी बताते हैं कि एडमिन की जाँच किसी प्रकार के नियम (महत्वपूर्ण नहीं) के विरुद्ध यूजर आईडी, नाम और पासवर्ड का मिलान करके की जाती है।
मेरे सिर में इसके लिए दो संभावित फ़ंक्शन हस्ताक्षर हैं:
public bool IsAdmin(User user);
public bool IsAdmin(int id, string name, string password);
मैं अक्सर दूसरे प्रकार के हस्ताक्षर के लिए जाता हूं, यह सोचकर कि:
- फ़ंक्शन हस्ताक्षर पाठक को बहुत अधिक जानकारी देता है
- फ़ंक्शन के अंदर निहित तर्क को
User
कक्षा के बारे में जानना नहीं है - यह आमतौर पर फ़ंक्शन के अंदर थोड़ा कम कोड में परिणाम होता है
हालांकि मैं कभी-कभी इस दृष्टिकोण पर सवाल उठाता हूं, और यह भी महसूस करता हूं कि किसी समय यह अविवेकी हो जाएगा। यदि उदाहरण के लिए एक फ़ंक्शन दस अलग-अलग ऑब्जेक्ट फ़ील्ड के बीच एक परिणामी बूल में मैप करेगा, तो मैं स्पष्ट रूप से पूरे ऑब्जेक्ट में भेजूंगा। लेकिन इस तरह के एक स्पष्ट उदाहरण के अलावा मैं वास्तविक वस्तु में पास होने का कारण नहीं देख सकता।
मैं या तो शैली के लिए किसी भी तर्क की सराहना करता हूं, साथ ही साथ आप जो भी सामान्य टिप्पणियों की पेशकश कर सकते हैं।
मैं दोनों वस्तु उन्मुख और कार्यात्मक शैलियों में कार्यक्रम करता हूं, इसलिए प्रश्न को किसी भी और सभी मुहावरों के रूप में देखा जाना चाहिए।