---
title: 'Keep it simple, [censored]'
url: 'https://graker.ru/news/2024/10/21/keep-it-simple-censored'
language: ru
type: post
author: 'Роман Грачев'
published: '2024-10-21T11:25:00+03:00'
updated: '2024-10-21T11:29:23+03:00'
categories:
  - Программирование
---

# Keep it simple, [censored]

Уж сколько раз твердили миру, функция, маленький именованный кусочек кода, который можно повторно использовать — должна делать что-то одно. То, что следует из её названия, из её назначения. И больше ничего делать не должна, особенно чего-то никак из названия/описания не следующего.

Но только всё не впрок. И если пока ты джун, тебе кажется нормальным, что можно в методе добавления какой-нибудь записи заодно сразу разослать имейлы — а чо такова, удобно же. То потом ты вырастешь, и напишешь библиотеку, которой кто-нибудь другой захочет пользоваться, а в ней будет вот такое:

```
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\] оторвать бы
