Да, всегда. Я думаю, что настоящая суть рефакторинга - это выбрать, с каких шагов начать.
Я считаю, что при рефакторинге больших изменений безопасным способом всегда нужно иметь достаточно четкое представление о том, куда вы хотите пойти. Затем рассмотрите свою существующую систему и попытайтесь выяснить, какие части вы можете представить, которые имеют наименьшую вероятность радикальных изменений. Затем вы можете ввести их в контролируемую и хорошо проверенную манеру.
Итак, что вы делаете, так это работаете в гуще злобности. Не всегда атакует прямо с фронта, но иногда просто разбивает мелкие кусочки. Обычно я жду и получаю «большой выигрыш» только после нескольких раундов откола при малой злобе. Но я знаю , куда я хочу пойти.
Приятно работать таким образом, что вы можете поддерживать прогресс. Вы никогда не «прекращаете разработку, чтобы делать рефакторинг». Возможно, есть случаи, когда остановка - это правильная ситуация, но в большинстве случаев это не так.
Идея в том, что если вы «начнете» с обналичивания призовых денег, вы будете тратить следующие X дней на выполнение тяжелой работы. И есть риск, может быть, вы курите или это не работает - или тратите 6 месяцев вместо недели. Если вы сначала выполняете тяжелую работу, то выигрыш приза будет возможен с меньшим риском. И ваш код будет улучшаться по мере продвижения. Иногда вы можете решить, что выполнения половины работы было достаточно, поскольку ваше понимание проблемы возрастает. Иногда твое представление о том, куда ты хочешь пойти, было слегка провалено, и ты можешь изменить свою цель по мере продвижения.
Но заманчиво идти прямо к награде.