Skip to content

Latest commit

 

History

History
121 lines (87 loc) · 4.81 KB

File metadata and controls

121 lines (87 loc) · 4.81 KB

Код должен дышать

Форматирование делает код опрятнее: выравнивает отступы и расставляет пробелы. Но автоматические инструменты не понимают его смысла. Они не знают, где заканчивается одна логическая структура и начинается другая.

А программисту важно видеть не строки, а блоки логики. Каждое завершённое действие — новая мысль, её нужно отделять пустой строкой, чтобы код было проще читать и понимать.

Если не дать коду «дышать», он превращается в сплошной поток текста. Такой код давит. Утомляет. Изматывает. В нём легче ошибиться — потому что невидна структура.

Плохая новость:

Ни один автоматический инструмент форматирования не научит ваш код дышать.

Рассмотрим пример:

// Плохо [✗]
$user = $request->user();
$zone = ClimateZone::find($id);
$zone->assign($user);
$zone->save();
return $zone;

Плотность текста не даёт глазу сделать паузу и понять, где что происходит. Всё сливается в один поток. Лучше отделять каждую завершённую мысль пустой строкой. Пусть будет пауза. Это нужно не для компьютера, а для человека, чтобы это выглядело так:

// Хорошо [✓]
$user = $request->user();

$zone = ClimateZone::find($id);
$zone->assign($user);
$zone->save();

return $zone;

Такой код «дышит»:

  • первый блок — получение пользователя;
  • второй блок — работа с климатической зоной;
  • третий блок — возврат результата.

Ещё пример с условием и несколькими действиями:

// Плохо [✗]
if ($user->isAdmin()) {
    $settings->loadDefaults();
    $settings->setTheme('dark');
    $settings->applyUserPreferences();
    $settings->enableNotifications();
    $settings->save();
    Log::info('Настройки для администратора обновлены');
}

Разобьём на осмысленные части:

// Хорошо [✓]
if ($user->isAdmin()) {
    $settings->loadDefaults();
    $settings->setTheme('dark');

    $settings->applyUserPreferences();
    $settings->enableNotifications();

    $settings->save();

    Log::info('Настройки для администратора обновлены');
}

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

Иногда пауза мешает, их избыток разрушает поток. Бывает код, где всё держится на ритме — строка за строкой, быстро, без отступов. И вставленная пустая строка рвёт это ощущение, как случайный абзац посреди строки диалога.

Например, вот так:

// Плохо [✗]
$logger->debug('start');

$service->prepare();

$service->run();

$logger->debug('done');

Здесь пустые строки разрывают логическую цепочку, которая воспринимается лучше как единое целое — это последовательность действий, которую хочется видеть непрерывной.

$logger->debug('start');

$service->prepare();
$service->run();

$logger->debug('done');

Если сомневаетесь, нужно ли ставить пустую строку, попробуйте вместо неё вставить комментарий. Если он логично завершает блок, значит, и отступ уместен. А если не уверены — всё равно отделите. Хуже точно не будет.

Код должен читаться так же, как текст — с абзацами, паузами и интонацией. Если убрать структуру — рушится восприятие.