📏 Единый стиль форматирования кода: как улучшить использование скобок и фигурных скобок в PHP
В статье предлагается новый подход к оформлению синтаксиса в PHP, который основывается на логике языка, а не на исторических привычках из других языков программирования, таких как C или Java. Цель — создать стиль, который будет унифицированным, систематичным, последовательным и лёгким для запоминания.
🔑 Что предложено?
Унификация: одна и та же правило применяется ко всем соответствующим конструкциям — будь то функции, управляющие структуры или вложенные выражения.
Системность: каждое правило следует прямо из синтаксической структуры, а не из лексической категории (ключевое слово, идентификатор и т. д.).
Последовательность: одинаковое обращение с конструкциями без произвольных исключений.
Лёгкость запоминания: устранение контекстных различий и эстетических отличий, не имеющих функционального значения.
📚 Как это работает?
Нет пробела перед открывающимися скобками: Например, if($x)
и while($y)
— это всегда одно правило, независимо от того, является ли конструкция управляющей или функцией.
Открывающие фигурные скобки всегда на той же строке, что и управляющая структура: Например, function foo() {
или if($x) {
.
Закрывающие фигурные скобки на новой строке, выровненные с началом блока.
🚫 Почему стоит отказаться от исторических конвенций?
Ранее использованные в таких стандартах, как PSR-2 и PSR-12, подходы взяли за основу стиль, присущий языкам, подобным C, что ведет к путанице и необходимости запоминать исключения. Например, скобки в функциях и управляющих конструкциях должны располагаться по-разному, хотя структура этих конструкций схожа. Эти отличия не улучшали читаемость кода, а наоборот, только увеличивали когнитивную нагрузку.
🔥 Преимущества нового подхода:
Упрощённое восприятие кода.
Совместимость с инструментами автоматического форматирования, такими как PHP-CS-Fixer или линтеры.
Чистый и вертикально структурированный код, который легче воспринимать.
📈 Специальные случаи: if/elseif/else и try/catch/finally
Предлагается установить правило, что все блоки (например, if
, elseif
, else
, try
, catch
, finally
) должны начинаться с новой строки после закрывающей фигурной скобки предыдущего блока. Это улучшает структуру и читабельность кода, делая его более понятным и логичным.
💡 Советы для новых конструкций:
Стрелочные функции (fn): не ставить пробел между fn
и открывающей скобкой.
Тернарные выражения (? :): использовать скобки для сложных вложенных выражений и ставить пробелы вокруг ?
и :
.
👉 Читать статью
>>Click here to continue<<