"ветки функций" - это когда каждая функция разрабатывается в своей собственной ветке и только сливается с основной линией, когда она была протестирована и готова к отправке. Это позволяет владельцу продукта выбирать функции, которые входят в данную отгрузку, и "парковать" функцию, которая написана частично, если требуется более важная работа (например, клиент звонит в MD, чтобы жаловаться).
"рефакторинг" преобразует код, чтобы улучшить его дизайн, чтобы снизить стоимость изменений. Не делая этого постоянно, вы, как правило, получаете более уродливые кодовые базы, для которых сложнее написать тесты.
В реальной жизни всегда есть клиенты, которые были проданы новыми функциями и из-за политики, все клиенты должны видеть, что прогресс продвигается в "своей" группе функций. Поэтому очень редко бывает, что на ветвях есть много времени, не имеющих много готовых функций.
Если какой-либо рефакторинг был выполнен, слияние в "ветвях функций" становится намного сложнее, если не невозможно.
Должны ли мы просто отказаться от возможности рефакторинга?
См. также "Как вы справляетесь с напряжением между рефакторингом и необходимостью слияния?