Разработка через тестирование или подход Test-Commit-Revert?
Большинство разработчиков практикуют TDD или разработку через тестирование. Редко мы видим TCR, подход Test-Commit-Revert.
Почему TCR лучше, чем TDD?
Оба отлично справляются с тестированием кода. Улучшение качества существующих. Но между ними есть несколько ключевых отличий.
Давайте пройдемся по различиям.
TDD
Вы знаете о TDD. Красно-зелено-синий поток.
Напишите тест. Тест провален. Напишите достаточно кода для прохождения. Рефакторинг.
Вещи становятся грязными, когда что-то не работает.
У вас может быть неправильный тест. У вас может быть неправильный код. Или в худшем случае оба.
Какую стратегию возврата вы применяете? Здесь на помощь приходит TCR.
ТКР
test && commit || revert
Если тесты не проходят, верните код. Довольно радикальный ход. Пока вы не попадете в зеленый цвет, ваш код будет отменен.
Этот скрипт был создан как часть программирования Limbo. Как низко можно опуститься в плане изменений? Это был главный вопрос при работе в Limbo.
Неправильный код удаляется мгновенно. Отсюда revert
. Это оставляет репо в зеленом состоянии. Все время.
TCR или TDD?
Оба метода дают нам тесты. Легко сделать вывод, что делает код. Они служат документацией для кода. Поддерживайте будущие изменения и оставляйте стабильный код позади.
TCR стимулирует небольшие изменения. Небольшие изменения приводят к небольшим коммитам. Можно сказать микрокоммиты.
Несколько преимуществ этих коммитов. Легко пролистнуть. Легко пересматривать. Слияние легко, rebase легко.
У TDD нет стимула для создания небольших коммитов. Вы можете создавать большие коммиты. Когда происходит что-то плохое, вы можете двигаться вперед.
Так как TCR имеет revert
часть. Возврат происходит как для кода, так и для теста. У вас никогда не будет плохого кода. Он немедленно удаляется, так как не проходит тесты.
В TDD у нас есть много стратегий возврата. Без строгих политик можно оставить плохой код. Так как вы теряетесь в том, что вам нужно вернуться.
Следующие две картинки изображают поток. Поток TDD и TCR, когда что-то идет не так.
Есть ли у TCR более четкая картина? Да, и это потому, что вернуться просто.
С TDD вернуть часть сложно. Иногда вы откатываете изменения. Иногда вы возвращаете код. Иногда оба.
Возврат с помощью TCR прост. Вы ломаете тесты, и все возвращается.
Вывод
TCR обеспечивает лучшее обслуживание с помощью микрокоммитов. Микрокоммиты с краткими PR ведут к лучшему программному обеспечению.
С другой стороны, TDD добавляет накладные расходы при работе с микрокоммитами. Стратегии возврата несимметричны, что приводит к плохому опыту разработчиков.
Ресурсы
проверить && зафиксировать || вернуться
В рамках Limbo on the Cheap мы изобрели новый рабочий процесс программирования. Я ввел «проверить && зафиксировать, где каждый раз…medium.com»
Limbo по дешевке
Песня Limbo спрашивает: «Как низко вы можете пасть? Limbo — это стратегия масштабирования совместной работы над программными проектами от…medium.com»