Самое главное при проведении review — это использование полученного результата. В результате review могут появиться следующие артефакты:
- Описание способа решения задачи (design review)
- UML диаграммы (design review)
- Комментарии к стилю кода (code review)
- Более правильный вариант (быстрый, легкочитаемый) реализации (design review, code review)
- Указание на ошибки в коде (забытое условие в switch, и т.д.) (code review)
- Юнит тесты (design review, code review)
При этом очень важно, чтобы все результаты не пропали, и были внесены в VCS, wiki. Этому могут препятствовать:
- Сроки проекта.
- Лень, забывчивость разработчиков
- Отсутствие удобного механизма внесения изменений review, а также контроль внесения этих изменений.
Для преодоления этих проблем частично может помочь:
- pre-commit hook в VCS
- Создание ветви в VCS, из которой изменения вливаются в основную ветвь только после review
- Запрет сборки дистрибутива на CI сервере без проведения review. Например, при сборке дистрибутива проверять специальные свойства (svn:properties), либо специальный файл с результатами review. И отказывать в сборке дистрибутива, если не все ревьюверы одобрили (approve) код.
- Использование методологии в разработке (в которой code review является неотъемлемой частью).
Сложности при проведении review (субъективное мнение)
|
|
Основная сложность, с которой мы столкнулись, когда внедряли review в первый раз: это невозможность контроля изменений по результатам review. Отчасти это связано с тем, что данная практика применялась без других практик — CI (это еще раз доказывает тот факт, что все инженерные практики должны применяться вместе).
Утилиты для review
Вообще, утилит для проведения review существует большое количество, как платных, так и бесплатных. Я не стал их приводить, чтобы не навязывать свою точку зрения, в интернете можно найти множество инструментов и подробное описание.
Ссылки
- http://blog.not-a-kernel-guy.com/2007/02/21/151
- http://www.rsdn.ru/forum/management/3350124.flat.aspx
- http://ostatic.com/blog/open-source-code-review-tools
- http://xn-----clcksaplxf6byd3cyb.xn--p1ai/
Рефа́кторинг (англ. refactoring) или реорганизация кода — процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы[1][2]. В основе рефакторинга лежит последовательность небольших эквивалентных (то есть сохраняющих поведение) преобразований. Поскольку каждое преобразование маленькое, программисту легче проследить за его правильностью, и в то же время вся последовательность может привести к существенной перестройке программы и улучшению её согласованности и четкости.