Code Review: необходимо, полезно, экономически выгодно

автор Дмитрий Носов

19 Окт 2012

В одной из предыдущих статей мы говорили о недавнем внедрении в работу особого типа инженерных практик, а именно о Code Review. Думаю, не лишним будет вкратце напомнить, что под Code review мы понимаем систематическую проверку кода с целью обнаружения ошибок, недочетов, расхождений, не замеченных на начальной стадии разработки. Инспекцию кода проводят периодически так называемые ревьюеры, при этом ими контролируется не только сам код (его соответствие стандартам, корректность и прочее), но и общая логика реализации задачи.

Несмотря на очевидную полезность этого процесса, так или иначе, существуют мнения на предмет необходимости внедрения этой практики. Некоторые полагают, что это лишь трата драгоценного времени разработчиков, что программист и сам способен просмотреть свой код без постороннего вмешательства.  Но мы придерживаемся иной точки зрения. Ибо как показала практика непосредственно для нашей компании, ревью кода не просто полезный этап разработки, но даже необходимый.

В подтверждении своих слов ниже приведу описание положительных тенденций, которые мы пронаблюдали после введения Code Review.

1. Обнаружение большего числа дефектов до передачи в QA стало возможным в силу нескольких причин:

  • Быстрая работа над ошибками. Если ревьюер знает разработчика, имеет опыт работы с его кодом, то без особых усилий может “отловить” характерные ошибки своего коллеги;
  • Опыт. Ревьюер, будучи более подкованным и опытным программистом, вполне возможно, уже сталкивался с решением подобной задачи и знает потенциально слабые места программного кода;
  • Взгляд со стороны. Каждый может пропустить ошибку, а повторный просмотр снижает вероятность ее наличия.
  • Дополнительная мотивация. Если разработчик знает, что код будет просматриваться, то сам вполне заинтересован в том, чтобы допускать как можно меньше ошибок.

2. Улучшение качества кода за счет обсуждения реализации между разработчиками:

  • Логика и подходы к решению задачи, алгоритмы, имена сущностей  и другие детали работы – все можно обсудить и найти наиболее подходящий вариант, отвечающий непосредственно данной проблеме;
  • Разработчик видит не только свой код, но и код коллеги, может сравнить их и при необходимости использовать в своей работе.

3.  Упрощение поддержки кода стало возможным, благодаря совместной работе над ним.

4. Code Review как инструмент обучения сотрудника

Теперь новички в разработке могут просматривать код более опытных коллег: учиться, задавать вопросы не только по структуре и организации кода, но и по логике решения самой задачи, тем более, если старший разработчик уже сталкивался с похожей проблемой.

Со своей стороны,  отвечая на вопрос о целесообразности ведения постоянной инспекции кода, с  чистой совестью говорю:  “надо, товарищи! “ Поскольку результат от таких проверок с лихвой окупит потраченное время.

В заключении приведу несколько высказываний разработчиков нашей компании об опыте и результатах внедрения ревьюинга.

Из первых рук: мнения разработчиков о Code Review

“Я участвовал в проекте, предусматривавшем перекрестный ревьюинг кода: два разработчика, соответсвенно, просмотр кода друг друга. Скажу честно: удобно, нужно, нетрудозатратно. Если в цифрах, то поначалу ревьюинг обнаруживал примерно 10-15 ошибок, а затем 0-5 ошибки на один и тот же объем кода. А по времени в день весь процесс занимал не более 20 минут, поэтому, как мне кажется, смысл в такой работе есть точно.”

Алексей Романенко, PHP-разработчик

“Ежедневное ревью кода - это хорошая практика обмена опытом и обнаружения ошибок, особенно, если дело касается новых технологий и проектов со сложной бизнес логикой.  Проматривая ревью коллег, можно как обнаружить новые способы решения той или иной задачи, так и поделиться опытом, как сделать лучше и правильнее. Как результат, команда прогрессирует быстрее, технический уровень разработчиков выравнивается, улучшается понимание целей, качество проекта возрастает, все возможные конфликты в команде, на почве "кривого кода", решаются на самых ранних стадиях. А для заказчика это приносит денежные результаты, качественный код легче, быстрее и дешевле сопровождать. Это экономит как прямые затраты на команду, так и увеличивает перспективную прибыль, позволяя предлагать пользователям проекта новые "фичи" в нужное время опережая конкурентов”

Константин Медведев, Project Manager

“Код ревью как инструмент очень полезен в плане воспитания, обучения нового сотрудника. Все первые комиты человека нужно проверять, обсуждать, это позволит на ранних этапах присекать не соблюдения принятых стандартов разработки, что свою очередь облегчит процесс дальнейшей работы над проектом”

Николай Джулай, Project Manager

  • 0 Репосты

Комментарии

Фильтр

Закрыть

Технологии

Индустрии