Уж сколько раз твердили миру, функция, маленький именованный кусочек кода, который можно повторно использовать — должна делать что-то одно. То, что следует из её названия, из её назначения. И больше ничего делать не должна, особенно чего-то никак из названия/описания не следующего.
Но только всё не впрок. И если пока ты джун, тебе кажется нормальным, что можно в методе добавления какой-нибудь записи заодно сразу разослать имейлы — а чо такова, удобно же. То потом ты вырастешь, и напишешь библиотеку, которой кто-нибудь другой захочет пользоваться, а в ней будет вот такое:
public function loadAccountBalance(AccountInterface $account) {
// Load site balance if user can administer transactions.
if ($account->hasPermission('administer transactions')) {
return $this->loadSiteBalance();
}
// Check if issuer balance exists.
// ...
То есть метод, реализующий простую функцию — вернуть пользовательский баланс — внезапно, вероломно и без предупреждения вернёт баланс всего сайта, если вдруг у данного пользователя есть административные права.
И если 1 человек, глядя на это, скажет — о, как удобно, я как раз так и хотел! То, я уверен, на него придется 99, которые скажут
Ах ты [censored] [censored] [censored] я два часа потратил [censored] [censored] руки этому [censored] оторвать бы