Funkce by měla mít jasně definované, úzké odpovědnosti s jasně definovanými, minimalistickými typy návratnosti. Pokud začnete vytvářet "boží funkce", které dělají všechno a kuchyňský dřez podle toho, jaké argumenty předáte, jdete silně do oblasti obtížně udržovatelného kódu špaget. Nechcete funkci, která udělá A a vrátí B, když jí předáte X, ale udělá C a vrátí D, když jí předáte Y atd...
Je dobré začít s betonem a postupem času zobecňujte, když uvidíte, že se objevují podobné vzorce. Vytvořte tedy metody, které skutečně potřebujete:
public function findUserById($id)
public function findUserByEmail($email)
public function updateCompanyName($id, $newName)
Pokud zjistíte, že mezi těmito funkcemi sdílíte kód, sjednoťte kód v zákulisí, aby byl SUCHÝ:
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) {
...
}
Nezačínejte opačně a nemyslete si, že „potřebujete pouze X, Y a Z“, které se zdají být dostatečně podobné na to, aby je bylo možné sjednotit do jedné metody, a později zjistěte, že mezi X, Y a Z jsou malé rozdíly, a zasypte svůj kód pro každého zvláštní případy. To vede k funkcím, které jsou buď geniální, nebo tak obecné, že v podstatě samy o sobě nic nedělají.