Комментарии 8
Test && Commit || Revert
Разве перед тем как тестировать, не нужно сделать изменение? А прежде, чем сделать откат (revert), не должно-ли изменение быть сохранено (commit)? Паттерн скорее выглядит так: Fix && Commit && Test || Revert.
Разве перед тем как тестировать, не нужно сделать изменение?Нужно, но есть разные уровни тестирования. Например, коммитить код, который вернут со словами «Оно не компилируется» — такое себе (да, это тоже часть тестирования, но этим обязаны заниматься разработчики).
прежде, чем сделать откат (revert), не должно-ли изменение быть сохранено (commit)?Если речь о revert как о revert-коммите — очевидно, нужно. А если речь о откате изменений в более широком смысле (и как я понимаю, речь именно о таком) — то это скорее git restore, но всё равно revert changes
Он там рассуждает об этом как о партерне. Поэтому я думаю термины стоит трактовать в более широком смысле, нежели конкретные инструменты. Прежде чем запускать тексты, измененный код нужно сохранить - это commit на файловую систему. Там же вы будете выполнять restore если что-то серьезно пошло не так. Система контроля версий и CI это следующий уровень, где все тоже самое повторяется.
Есть разные варианты, можно и свой подобрать (в зависимости от используемого языка и тулзов). Основная идея состоит в том, чтобы некорректный код (который не проходит тесты) вообще не попадал в историю изменений.
Я несколько раз пробовал такой подход. Он довольно забавный. Не уверен, что получилось бы в таком режиме работать в продакшн-коде (в первую очередь, из-за того, что для TCR нужны быстрые тесты, а в легаси-проектах такое бывает весьма редко). Но как отдельное упражнение это стоит попробовать. Позволяет тренировать навык писать код маленькими кусочками, буквально отдельными штрихами. Это полезное умение.
А какие идеи Бека прижились? Я не вижу, чтобы XP кто-то всерьёз использовал.
А как же CI? Это тоже часть XP
Гм, по-моему, текст уже даёт ответ на этот вопрос :) Ну давайте ещё раз:
Бек — это не только XP (уж паттерны проектирования люди явно всерьёз воспринимают)
XP не стало супермассовым целиком, но отдельные его составляющие прижились. Например, насколько понимаю, XP агитировало за короткий релизный цикл ещё в 90-х, до появления Agile Manifesto. И с 90-х люди действительно стали релизить куда чаще.
Существуют и компании, всерьёз использующие XP целиком, в тексте даже ссылка на конкретный пример есть. Это не для всех, нишевая история, но это тоже работает.
Но у него по-прежнему появляются и тексты про техническую конкретику. Один из них описываетподход «Test && Commit || Revert»: если при добавлении нового кода тесты проходят, то код коммитится, а если они падают, то код отбрасывается.
Для многих это звучит странной штукой, неприменимой в реальной разработке.
«Идея очевидно безумная. Но если начать считать все безумные идеи Кента, которые в итоге сработали, то пальцев не хватит».
Эм... это же обычный CI/CD на GitLab, когда на каждый коммит автоматически прогоняются тесты, и если тесты падают - GitLab не позволяет смержить этот пулл реквест.
Кент Бек: отец экстремального программирования, паттернов проектирования, JUnit и TDD