Форматирование делает код опрятнее: выравнивает отступы и расставляет пробелы. Но автоматические инструменты не понимают его смысла. Они не знают, где заканчивается одна логическая структура и начинается другая.
А программисту важно видеть не строки, а блоки логики. Каждое завершённое действие — новая мысль, её нужно отделять пустой строкой, чтобы код было проще читать и понимать.
Если не дать коду «дышать», он превращается в сплошной поток текста. Такой код давит. Утомляет. Изматывает. В нём легче ошибиться — потому что невидна структура.
Плохая новость:
Ни один автоматический инструмент форматирования не научит ваш код дышать.
Рассмотрим пример:
// Плохо [✗]
$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');Если сомневаетесь, нужно ли ставить пустую строку, попробуйте вместо неё вставить комментарий. Если он логично завершает блок, значит, и отступ уместен. А если не уверены — всё равно отделите. Хуже точно не будет.
Код должен читаться так же, как текст — с абзацами, паузами и интонацией. Если убрать структуру — рушится восприятие.