Разработка через тестирование или подход 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 по дешевке
Песня Limbo спрашивает: «Как низко вы можете пасть?
Limbo — это стратегия масштабирования совместной работы над программными проектами от…medium.com»