Написать пост

Проверяем себя и других: чек-лист для код-ревью

Аватар Никита Прияцелюк

Подробный чек-лист, который помогает ничего не забыть во время ревью кода. Подойдёт для ревьюеров и для самопроверки.

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

Чек-лист подойдёт любому разработчику, который хочет проверить свой (или чужой) код и сделать его лучше. Ещё больше упростят жизнь программы, которые будут проверять код за вас и автоматически добавлять правки в пул-реквест.

Реализация

☑️ Изменения в коде выполняют свою задачу?

☑️ Решение можно упростить?

☑️ Это изменение вносит нежелательные зависимости времени компиляции или выполнения?

☑️ Был ли использован фреймворк/API/библиотека/сервис, который не нужно было использовать?

☑️ Есть ли фреймворк/API/библиотека/сервис, который не был использован, но мог бы улучшить решение?

☑️ Код находится на верном уровне абстракции?

☑️ Код достаточно разбит на модули?

☑️ Можете ли вы придумать другое решение, которое значительно лучше в плане поддерживаемости, читабельности, производительности и безопасности?

☑️ Существует ли похожая функциональность в кодовой базе? Если да, то почему она не была использована повторно?

☑️ Есть ли какие-нибудь лучшие практики, шаблоны проектирования или специфические для языка шаблоны, которые могли бы существенно улучшить этот код?

☑️ Следует ли этот код принципам SOLID?

Логические ошибки и баги

☑️ Есть ли сценарий, при котором код не будет работать так, как задумано?

☑️ Могут ли какие-то события или введённые данные сломать код?

Обработка ошибок и логирование

☑️ Правильно ли обрабатываются ошибки?

☑️ Нужно ли добавить/убрать какую-либо отладочную информацию?

☑️ Дружелюбны ли к пользователю сообщения об ошибках?

☑️ Хватает ли логируемых событий и написаны ли они так, чтобы можно было легко провести отладку?

Юзабилити и доступность

☑️ Хорошо ли спроектировано предлагаемое решение с позиции юзабилити?

☑️ Хорошо ли задокументирован API?

☑️ У предлагаемого решения хорошая доступность?

☑️ API/UI интуитивен для использования?

Тестирование

☑️ Код тестируемый?

☑️ Достаточно ли для него автоматизированных тестов (юнит/интеграционных/системных)?

☑️ Уже существующие тесты в достаточной степени покрывают новый код?

☑️ Есть ли какие-либо тест-кейсы, входные данные или пограничные случаи, которые можно протестировать вдобавок?

Производительность

☑️ Повредит ли вносимое изменение производительности системы?

☑️ Есть ли возможность улучшить производительность кода?

Зависимости

☑️ Если это изменение требует изменений вне кода, например в документации или конфигурации, были ли они сделаны?

☑️ Может ли это изменение иметь последствия для других частей системы или обратной совместимости?

Безопасность и защита данных

☑️ Этот код создаёт дыру в безопасности?

☑️ Авторизация и аутентификация проводятся должным образом?

☑️ Правильно ли обрабатываются и хранятся конфиденциальные пользовательские данные?

☑️ Правильное ли шифрование используется?

☑️ Раскрывает ли это изменение какие-либо секретные данные вроде ключей доступа, паролей или имён пользователей?

☑️ Если код работает с пользовательским вводом, учитывает ли он такие уязвимости, как межсайтовый скриптинг и SQL-инъекции; проводится ли его очистка и проверка?

☑️ Данные, полученные из внешних API или библиотек, проверяются должным образом?

Производительность

☑️ Повлияет ли изменение кода негативно на производительность системы?

☑️ Есть ли какая-нибудь возможность повысить производительность кода?

Читабельность

☑️ Код было легко понять?

☑️ Какие части были вам непонятны и почему?

☑️ Можно ли улучшить читабельность кода, добавив методы меньшего размера?

☑️ Можно ли улучшить читабельность, изменив имена функций/методов/переменных?

☑️ Код находится в правильном файле/папке/пакете?

☑️ Можно ли изменить структуру каких-либо методов, чтобы получился более интуитивный поток управления?

☑️ Понятен ли поток управления?

☑️ Есть ли ненужные комментарии?

☑️ Можно ли донести мысль лучше в каких-то комментариях?

☑️ Сделает ли код понятнее большее количество комментариев?

☑️ Можно ли убрать какие-нибудь комментарии, сделав сам код более читабельным?

☑️ Остался ли закомментированный код?

Экспертное мнение

☑️ Стоит ли какому-нибудь специалисту, например по безопасности или юзабилити, посмотреть на код перед коммитом?

☑️ Повлияет ли это изменение на другие команды? Стоит ли им также высказать своё мнение?

Следите за новыми постами
Следите за новыми постами по любимым темам
13К открытий13К показов