Устраняет ли парное программирование необходимость проверки кода в проекте Extreme Programming (XP)?

14

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

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

В таком случае, нужны ли обзоры кода? Я имею в виду, прекратить программирование и просто делать обзоры кода.

Эдуардо Копат
источник
3
Парное программирование - только арендатор XP. Есть много других гибких методологий, которые не следуют XP. Там нет ничего в Манифесте для гибкой разработки программного обеспечения , ни принципов , лежащих в Agile Manifesto , который упоминает парное программирование. Там также ничего о обзорах кода тоже. Важно не предполагать, что все проворство экстремально.
Позвольте мне перефразировать мой вопрос, чтобы включить только XP.
Эдуардо Копат
Есть ли причина, по которой вы бы не попробовали это и не установили некоторые критерии для остановки? Если команда довольна регистрацией кода, это должно быть достаточно веской причиной.
JeffO

Ответы:

13

Одним из ключевых ресурсов для экстремального программирования является ресурс Ward, также известный как Portland Pattern Repository, также известный как C2.com . Именно здесь многие люди хэшировали различные методологии и документировали их по мере их использования.

В этой вики есть страница « Обзоры кода экстремального программирования» , в которой участвует ряд авторов, включая Рона Джеффриса и Кента Бека.

На это они сказали:

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

ExtremeProgramming требует, чтобы вся разработка выполнялась двумя инженерами, работающими вместе. Код фактически пересматривается на лету, в значительной степени. Это гарантирует, что более чем один человек постоянно знает код.

ExtremeProgramming требует, чтобы все объекты имели UnitTests. Это гарантирует, что объект работает и продолжает работать как измененный.

Некоторые языки отражают. На таких языках UnitTests может напрямую проверять соответствие важных стандартов. (например, объекты должны реализовывать и # = и #hash, или ни то, ни другое.)

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

Поэтому проекты ExtremeProgramming не требуют явных обзоров. Отбросьте их от своей методологии.

Там также немного больше дискуссий по этой теме от других.

Хотя ключевые моменты заключаются в том, что с помощью комбинации тестов, совместного владения и парного программирования эти вещи решают задачи, которые, как правило, должны выполнять проверки кода, такие как:

  • Разогнать знания о том, что делается
  • Второй (или более) набор глазных яблок в коде, чтобы убедиться, что он соответствует стандартам
  • Проверьте правильность работы кода

Это делается непрерывно с помощью парного программирования и автоматического тестирования в экстремальном программировании, и, таким образом, явная проверка Фагана не требуется .

Связанное чтение:


источник
4
В другом вопросе я утверждал, что проверка кода - это ненужная трата (в смысле Lean), и что парное программирование должно быть предпочтительным методом обеспечения всех преимуществ, которые дает проверка кода. Излишне говорить, что люди оскорбляли мой аргумент, потому что я не подкрепил его «ГОЛОСОМ ВЛАСТИ», как вы. Для группы людей, которые занимаются логикой изо дня в день, мы нелогичны.
Майкл Браун
6
Риск выполнения парного программирования без дополнительных проверок кода заключается в том, что оба программиста сильно вовлечены в момент написания и могут писать код, который на тот момент кажется совершенно ясным и логичным, но в меньшей степени, если его снова увидеть через несколько дней. Насколько велик и / или приемлем этот риск, зависит от вашей организации.
Барт ван Инген Шенау
@MikeBrown Вы могли бы также утверждать, что парное программирование - ненужная трата, и что обзор кода должен и т. Д. И т. Д.
AlexFoxGill
Посмотрите, что я имел в виду под WASTE - это «скудное» определение слова. Подумайте о типичном процессе сборочной линии. Идея состоит в том, чтобы как можно быстрее вывести машину из строя, и после факта проверки качества (обзор кода). Принципы Lean требуют немного больше времени и усилий для повышения качества (парное программирование), поэтому проверка после проверки становится ненужной.
Майкл Браун