Приветствую!
Я унаследовал C # .NET-приложение, которое уже некоторое время расширяю и улучшаю.В общем, это была спешная работа (или тот, кто написал это, был менее компетентен, чем я).Приложение извлекает некоторые данные из встроенного устройства, отображает и манипулирует ими.В основе лежит коммуникационный поток в основной форме приложения, который выполняет более 600 строк кода, который вызывает функции повсеместно, реализуя конечный автомат - множество кода типа if-state-then-do.Взаимодействие с устройством осуществляется путем глобальной установки состояния / режима и предоставления возможности потоку делать свое дело.(Это всего лишь один пример плохого кода - в целом он не очень похож на OO, он напоминает стиль встроенного кода C, в котором написано встроенное ПО устройства).
Моя проблема в том, что этокусок кода является центральным для приложения.Программное обеспечение, протокол связи или прошивка устройства вообще не документированы.Очевидно, что для продолжения работы я должен взаимодействовать с этим кодом.
Что бы мне хотелось получить от руководства: стоит ли отбирать этот код и пытаться собрать что-то более разумное из информации, которую я могу перепроектировать?Я не могу решить!Причина, по которой я не хочу проводить рефакторинг, заключается в том, что код уже работает, и его изменение, безусловно, будет долгой, кропотливой и неприятной задачей.С другой стороны, не рефакторинг означает, что мне иногда приходится идти на компромисс с дизайном других модулей, чтобы я мог вызывать свой код с этого конечного автомата!
Я слышал о «Если это не сломано, не делайте»t исправить это! ", поэтому мне интересно, должно ли это применяться, когда" оно "влияет на дизайн будущего кода!Любой совет будет оценен!
Спасибо!