एक फ़ंक्शन में स्पष्ट रूप से परिभाषित, स्पष्ट रूप से परिभाषित, न्यूनतम रिटर्न प्रकार के साथ संकीर्ण जिम्मेदारियां होनी चाहिए। यदि आप "भगवान के कार्य" बनाना शुरू करते हैं जो सब कुछ करते हैं और रसोई सिंक आपके द्वारा पारित तर्कों के आधार पर होता है, तो आप स्पेगेटी कोड को बनाए रखने के लिए कड़ी मेहनत के क्षेत्र में जा रहे हैं। आप ऐसा फ़ंक्शन नहीं चाहते हैं जो ए करता है और यदि आप इसे एक्स पास करते हैं तो बी लौटाता है, लेकिन सी करता है और यदि आप इसे वाई पास करते हैं तो डी लौटाता है ...
ठोस शुरू करना एक अच्छा विचार है और समय के साथ सामान्यीकृत करें जैसा कि आप देखते हैं कि समान पैटर्न उभर कर आते हैं। इसलिए, वे विधियां बनाएं जिनकी आपको वास्तव में आवश्यकता है:
public function findUserById($id)
public function findUserByEmail($email)
public function updateCompanyName($id, $newName)
यदि आप पाते हैं कि आपने इन कार्यों के बीच कोड साझा किया है, तो कोड को पर्दे के पीछे से सूखा रखने के लिए एकीकृत करें:
public function findUserById($id) {
return $this->find('SELECT * FROM user WHERE id = ?', $id);
}
public function findUserByEmail($email) {
return $this->find('SELECT * FROM user WHERE email = ?', $email);
}
protected function find($query, $arg) {
...
}
दूसरे तरीके से शुरू न करें, यह सोचकर कि आपको "केवल एक्स, वाई और जेड की आवश्यकता है" जो एक विधि में एकीकृत होने के लिए पर्याप्त समान लगते हैं, फिर बाद में पता चलता है कि एक्स, वाई और जेड के बीच छोटे अंतर हैं और अपने कोड को कूड़ेदान के साथ प्रत्येक के लिए विशेष मामले। यह केवल उन कार्यों की ओर ले जाता है जो या तो विशाल हैं या इतने सामान्य हैं कि वे मूल रूप से अपने दम पर कुछ नहीं करते हैं।