Соглашения по написанию кода в команде нужны для того, чтобы меньше спорить и переделывать друг за другом.
Устанавливается единый стандарт, которому следует вся команда.
Для примера — соглашения, которые установлены в моей команде разработки. Привожу как есть, без правок и сокращений.
1. Оформление и стиль
Оформление исходного кода (пробелы, новые строки и прочее) должно соответствовать PSR12.
Настройки стиля PhpStorm выгружены в файл .editorconfig в корне репозитория и должны автоматически применяться у всех разработчиков на уровне проекта.
- Выравнивание в массивах используется без колонок.
Ссылки:
- PSR12: https://www.php-fig.org/psr/psr-12/
- PHPStorm настройка стиля: https://www.jetbrains.com/help/phpstorm/settings-code-style-php.html
2. Приватные по умолчанию
Все методы, свойства и константы по умолчанию делаем приватными. Повышаем до public и protected только при обоснованной необходимости, protected только если используется вместе с наследованием.
Если свойство нужно предоставить кому-то ещё, делаем геттер и если нужно то сеттер.
Если константа нужна где-то вне класса, либо перемещаем константу в тот класс который её использует, либо перемещаем этот код в класс с константой. Константы сущностей как правило не видны за пределами сущности.
Методы можно из приватных делать публичными когда они где-то понадобятся вне класса. В том числе если понадобилось вызвать их в тестах.
3. Используем типы
- Указываем типы для переменных, если тип не определяется IDE из окружающего кода
- Указываем типы для параметров
- Указываем типы возвращаемых значений
- Указываем типы для свойств классов и моделей
Не используем mixed — определите, какой тип вам нужен и используйте его.
Если тип можно описать то он должен быть описан.
Указываем тип явно, если это невозможно то используем PhpDoc.
4. Только актуальный код
Каждая строчка кода должна выполняться и отражать потребности клиентов, бизнеса или разработчиков. Мертвого кода быть не должно. Встретили код который не выполняется — ставим задачу на его удаление.
Комментарии, содержание которых можно понять из окружающего кода тоже лишние, удаляем.
Отладочный код — тесты, консольные команды для отладки — разрешается, но должно быть хорошо оформлено и гарантированно не запускаться случайно в проде. Отладочный код который уже не требуется, удаляем.