Соглашения по написанию кода в команде нужны для того, чтобы меньше спорить и переделывать друг за другом.

Устанавливается единый стандарт, которому следует вся команда.

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


1. Оформление и стиль

Оформление исходного кода (пробелы, новые строки и прочее) должно соответствовать PSR12.

Настройки стиля PhpStorm выгружены в файл .editorconfig в корне репозитория и должны автоматически применяться у всех разработчиков на уровне проекта.

  • Выравнивание в массивах используется без колонок.

Ссылки:

2. Приватные по умолчанию

Все методы, свойства и константы по умолчанию делаем приватными. Повышаем до public и protected только при обоснованной необходимости, protected только если используется вместе с наследованием.

Если свойство нужно предоставить кому-то ещё, делаем геттер и если нужно то сеттер.

Если константа нужна где-то вне класса, либо перемещаем константу в тот класс который её использует, либо перемещаем этот код в класс с константой. Константы сущностей как правило не видны за пределами сущности.

Методы можно из приватных делать публичными когда они где-то понадобятся вне класса. В том числе если понадобилось вызвать их в тестах.

3. Используем типы

  • Указываем типы для переменных, если тип не определяется IDE из окружающего кода
  • Указываем типы для параметров
  • Указываем типы возвращаемых значений
  • Указываем типы для свойств классов и моделей

Не используем mixed — определите, какой тип вам нужен и используйте его.

Если тип можно описать то он должен быть описан.

Указываем тип явно, если это невозможно то используем PhpDoc.

4. Только актуальный код

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

Комментарии, содержание которых можно понять из окружающего кода тоже лишние, удаляем.

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