Единственное, что я сделал с унаследованным кодом, с которым мне приходится работать, - это построил вокруг него настоящий API. Это API-интерфейс COBOL в стиле 1970-х годов, в котором я построил объектную модель .NET, так что весь небезопасный код находится в одном месте, все преобразования между собственными типами данных API и типами данных .NET находятся в одном месте, основные методы возвращают и принимают наборы данных и т. д.
Это было чрезвычайно трудно сделать правильно, и в нем все еще есть некоторые недостатки, о которых я знаю. Это также не очень эффективно, со всем, что происходит. Но, с другой стороны, я могу создать DataGridView, который обрабатывает данные в 15-летнем приложении и сохраняет их в Btrieve (!) Примерно через полчаса, и это работает. Когда клиенты приходят ко мне с проектами, мои оценки приводятся в днях и неделях, а не в месяцах и годах.