Igor Konovalov
JS developer with a passion. Currently working as a senior software engineer at Epam
качественно и с пользой
Когда вы делаете код ревью, это не только помогает избежать использования анти паттернов и костылей, но и даёт возможность поделиться и распространить знание о принципах написания хорошего кода
Идеально - Вся команда
Минимум - 2 (3) человека
Короткий и информативный заголовок
Описание основной идеи изменений
Зачем потребовались изменения?
Что было сделано?
Дополнительные детали по необходимости
Чек лист того, что нужно сделать перед мержем (тесты, squash, QA демо)
Добавить определенных людей к ревью
Оцени код, не человека
Не ставить апрув вслепую
Давать конструктивные замечания
В идеале с примером кода или хотя бы идеей
Не бояться обсудить вживую при необходимости
Если не получается (нет времени) то всё равно оставить коменты, но не заворачивать - и обязательно отметить место, где ревью закончилось
Стоит ли добавить эту функциональность именно сейчас?
Функционал делает то, что задумал разработчик?
Реализация функционала полезна для пользователей? («Пользователи» - это, как правило, как конечные пользователи, когда на них повлияют изменения, так и разработчики, которым придется «использовать» этот код в будущем)
Не ведется ли параллельно разработка того, что будет конфликтовать с текущим PR?
обычно означает, что «код не может быть быстро прочитан и понят»
- это реализация более универсального кода, чем нужно, или добавленная функциональность, которая на данный момент системе не нужна
достаточно длинное, чтобы полностью передать, что представляет из себя предмет или что делает функция, но не настолько длинное, чтобы его стало трудно читать
В комментариях нет необходимости, если код простой и самодокументируемый
(но так происходит не всегда)
Оставил ли разработчик комментарии к сложным участкам кода? Если да, то это повод задуматься над таким участком. Возможно у того, кто делает ревью, появится идея, как сделать проще.
Если при чтении кода построчно вы сталкиваетесь с большими структурами данных, сложным ветвлением и просто понимаете, что код стало сложно прочесть, то попросите автора прокомментировать изменения
Если вы понимаете код, но не чувствуете себя достаточно компетентным для проверки какой-либо части, то пригласите в PR проверяющего, кто обладает соответствующей квалификацией
Если вы видите что-то хорошее в PR, сообщите об этом автору. На код ревью часто просто фокусируются на ошибках, но также полезно отмечать хорошие стороны разработки. Иногда с точки зрения наставничества даже более ценно рассказать разработчику, что он сделал правильно, чем рассказать ему, что он сделал неправильно
Делая код ревью, убедитесь, что:
Код хорошо спроектирован
Функциональность действительно необходима пользователям кода и приложения
Любые изменения в интерфейсе разумны и выглядят хорошо
Любое асинхронное программирование выполняется в правильном порядке и не порождает необработанных исключений
Код не сложнее, чем должен быть
Разработчик не реализует вещи наперёд без четкого понимания и требований к их использованию
Код покрыт тестами
Тесты хорошо продуманы, корректны и полезны
Разработчик использовал подходящие имена для всего
Комментарии понятны и полезны, и в основном объясняют причину, а не то, что сделано
Код надлежащим образом документирован
Код соответствует нашим руководствам по стилю
Код ревью (и тесты) являются частью definition of done и к ним надо относиться серьёзно
- помочь автору, проекту, команде
Отвечать на вопросы в PR - это проявление ответственности и профессионализма
Объяснить выбранное решение, либо задать уточняющий вопрос
Для ревьювера:
Для автора:
By Igor Konovalov
JS developer with a passion. Currently working as a senior software engineer at Epam