Проверяем себя и других: чек-лист для код-ревью
Подробный чек-лист, который помогает ничего не забыть во время ревью кода. Подойдёт для ревьюеров и для самопроверки.
13К открытий14К показов
Код-ревью часто требует много времени и внимания, и легко что-нибудь упустить. Нашли и перевели для вас подробный чек-лист со списком того, на что нужно обратить внимание.
Чек-лист подойдёт любому разработчику, который хочет проверить свой (или чужой) код и сделать его лучше. Ещё больше упростят жизнь программы, которые будут проверять код за вас и автоматически добавлять правки в пул-реквест.
Реализация
☑️ Изменения в коде выполняют свою задачу?
☑️ Решение можно упростить?
☑️ Это изменение вносит нежелательные зависимости времени компиляции или выполнения?
☑️ Был ли использован фреймворк/API/библиотека/сервис, который не нужно было использовать?
☑️ Есть ли фреймворк/API/библиотека/сервис, который не был использован, но мог бы улучшить решение?
☑️ Код находится на верном уровне абстракции?
☑️ Код достаточно разбит на модули?
☑️ Можете ли вы придумать другое решение, которое значительно лучше в плане поддерживаемости, читабельности, производительности и безопасности?
☑️ Существует ли похожая функциональность в кодовой базе? Если да, то почему она не была использована повторно?
☑️ Есть ли какие-нибудь лучшие практики, шаблоны проектирования или специфические для языка шаблоны, которые могли бы существенно улучшить этот код?
☑️ Следует ли этот код принципам SOLID?
Логические ошибки и баги
☑️ Есть ли сценарий, при котором код не будет работать так, как задумано?
☑️ Могут ли какие-то события или введённые данные сломать код?
Обработка ошибок и логирование
☑️ Правильно ли обрабатываются ошибки?
☑️ Нужно ли добавить/убрать какую-либо отладочную информацию?
☑️ Дружелюбны ли к пользователю сообщения об ошибках?
☑️ Хватает ли логируемых событий и написаны ли они так, чтобы можно было легко провести отладку?
Юзабилити и доступность
☑️ Хорошо ли спроектировано предлагаемое решение с позиции юзабилити?
☑️ Хорошо ли задокументирован API?
☑️ У предлагаемого решения хорошая доступность?
☑️ API/UI интуитивен для использования?
Тестирование
☑️ Код тестируемый?
☑️ Достаточно ли для него автоматизированных тестов (юнит/интеграционных/системных)?
☑️ Уже существующие тесты в достаточной степени покрывают новый код?
☑️ Есть ли какие-либо тест-кейсы, входные данные или пограничные случаи, которые можно протестировать вдобавок?
Производительность
☑️ Повредит ли вносимое изменение производительности системы?
☑️ Есть ли возможность улучшить производительность кода?
Зависимости
☑️ Если это изменение требует изменений вне кода, например в документации или конфигурации, были ли они сделаны?
☑️ Может ли это изменение иметь последствия для других частей системы или обратной совместимости?
Безопасность и защита данных
☑️ Этот код создаёт дыру в безопасности?
☑️ Авторизация и аутентификация проводятся должным образом?
☑️ Правильно ли обрабатываются и хранятся конфиденциальные пользовательские данные?
☑️ Правильное ли шифрование используется?
☑️ Раскрывает ли это изменение какие-либо секретные данные вроде ключей доступа, паролей или имён пользователей?
☑️ Если код работает с пользовательским вводом, учитывает ли он такие уязвимости, как межсайтовый скриптинг и SQL-инъекции; проводится ли его очистка и проверка?
☑️ Данные, полученные из внешних API или библиотек, проверяются должным образом?
Производительность
☑️ Повлияет ли изменение кода негативно на производительность системы?
☑️ Есть ли какая-нибудь возможность повысить производительность кода?
Читабельность
☑️ Код было легко понять?
☑️ Какие части были вам непонятны и почему?
☑️ Можно ли улучшить читабельность кода, добавив методы меньшего размера?
☑️ Можно ли улучшить читабельность, изменив имена функций/методов/переменных?
☑️ Код находится в правильном файле/папке/пакете?
☑️ Можно ли изменить структуру каких-либо методов, чтобы получился более интуитивный поток управления?
☑️ Понятен ли поток управления?
☑️ Есть ли ненужные комментарии?
☑️ Можно ли донести мысль лучше в каких-то комментариях?
☑️ Сделает ли код понятнее большее количество комментариев?
☑️ Можно ли убрать какие-нибудь комментарии, сделав сам код более читабельным?
☑️ Остался ли закомментированный код?
Экспертное мнение
☑️ Стоит ли какому-нибудь специалисту, например по безопасности или юзабилити, посмотреть на код перед коммитом?
☑️ Повлияет ли это изменение на другие команды? Стоит ли им также высказать своё мнение?
13К открытий14К показов