Рекомендации на 👀-ревью
Вспомнил тут, что у нас были обсуждения
код-ревью, но каких-то итоговых экшенов мы не прописали. Давайте я попробую сформулировать некоторые стандарты, а вы накидайте улучшений в комментариях.
1️⃣Общие принципы
🔸Наличие обязательно как минимум одного аппрува от человека из пула проверяющих (список согласуется заранее). Без этого в прод катить нельзя.
🔸Назначить ответственного человека из команды, у которого в течение недели например освобождается некоторый ресурс на проведение ревью.
🔸Проводить ревью в промежуток до 2-3 дней после создания пулл-реквеста. Хотфиксы конечно лучше проверять сразу же и скорее выкатывать.
🔸Использовать конструктивные комментарии и без обращения к личностям: "Код содержит ошибку" вместо "Ты сделал ошибку".
🔸Перед тем как докопаться, лучше выяснить причины: "Почему здесь используется этот подход?" вместо "Переделай это"
🔸Избегаем попадания секретных ключей и токенов в код!
🔸В пулл-реквесте обозначена задача, которую решает код и по возможности приложена ссылочка на доп. материалы
🔸Чекаем, что код делает именно то, что заявлено
🔸Смотрим наличие логгера
🔸В коде отсутствует чувствительная информация
2️⃣Что по коду:
▫️Пишем читабельный(!) код
▫️Обязательно проверяем описание классов, функций и переменных
▫️Код естественно по PEP 8 и соответствует общекомандным принципам написания (типа SOLID)
▫️Убеждаемся, что нет неиспользуемых функций, переменных и закоментированных кусков кода
▫️Код разделен на логические модули и нет сильных нагромождений
▫️Есть аннотации типов, докстринги для всех функций и методов
▫️Параметры прописаны в отдельном конфиге, а не в коде
3️⃣Тесты, ошибки и исключения:
▪️Выводим конкретное исключение вместо общего Exception
▪️Пишем в логгер достаточно контекста для отладки
▪️Проверяем покрытие тестами критических моментов
▪️В тестах должны быть не только успешные, но и ошибочные сценарии
4️⃣Запросы и БД:
▫️Еще раз проверяем отсутствие ключей!
▫️Также проверяем соответствие одному стилю написания запросов
▫️Проверяем обработку SQL-инъекций
▫️В SELECT прописываем только необходимые столбцы, избегаем звездочек
Естественно, тут я пробежался по верхам, специально несколько раз упомянул про чувствительную информацию и ключи! Думаю, в больших командах разработки скорее даже есть жесткие регламенты по проведению код-ревью.
Если есть что добавить, welcome в комментарии!
#code