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