Здравствуйте, Khimik, Вы писали: K>Как вы для себя решаете эти проблемы?
Ничего нельзя переписывать. Вам кажется, что вы "избежите старых ошибок". На самом деле вы всего лишь внесёте новые.
Решайте только реальные проблемы. Если вам не нравится то место, в которое вы сейчас вносите изменения, то делайте локальный рефакторинг.
Переписывание с нуля — это работа с очевидным убытком и неочевидной выгодой.
Сначала вам надо добиться значительного тестового покрытия. Радикалы требуют 100%, но это требование — гарантия провала. Мало-мальски сложный проект покрыть на 100% невозможно.
Это займёт примерно в 2 раза больше времени, чем вы запланируете.
Затем вы начнёте переписывать код с нуля.
Это займёт примерно в 2 раза больше времени, чем вы запланируете.
Потом вы станете запускать тесты, и окажется, что надо потратить ещё X времени на это, т.к. половина тестов жёстко привязана к реализации, и фейлятся с новым кодом, несмотря на его корректность.
Потом окажется, что новый красивый код всё же фейлит некоторые тесты, потому что часть выброшенных в новой архитектуре заплаток решала неочевидные проблемы.
Обычно на этом этапе превышение бюджета становится настолько значительным, что принимается решение "а ну его в баню", со старого кода сдувается пыль, а новый код отправляют в музей поля чудес.
Если же желание нового оказывается сильнее жадности и здравого смысла, то тесты доводятся до 100% успеха и новая версия выпускается в свет.
Два-три года спустя половина народа всё ещё сидит на древней версии, потому что реальная эксплуатация выявила несколько десятков критичных проблем, которые не отлавливались тестами.
У целевой аудитории нет доверия к новой версии из-за этого. В итоге вам приходится маинтейнить две кучи дерьмокода вместо одной.
Греть вас будет только одно: мало кто из разработчиков не падал в эту яму. Из самого недавнего — посмотрите на Microsoft с их Edge.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.