В проекте, над которым я работаю, мы обрабатываем Medical Billing.
Каждый раз, когда государство вносит изменения в официальную форму (которую представляют наши классы данных), чтобы поддерживать обратную совместимость с предыдущими формами, мы добавляем новые свойства, но оставляем старые неповрежденными и обладаем свойством версии документа который используется для определения того, какая проверка выполняется, и действия пользовательского интерфейса для ее отображения.
Это привело к раздутым классам в течение всего срока действия проекта (почти 5 лет с изменениями, санкционированными государством) и просто не поддерживает старые форматы документов, это не вариант.
Я хотел бы попробовать создать новый класс для каждой версии документа, но даже тогда у нас будет несколько копий очень похожего (хотя и слегка измененного) кода. И имена классов, такие как ProgressNoteV16, ProgressNoteV17 выглядят ужасно.
Наследование нельзя использовать, потому что это все равно приведет к той же проблеме (классы, свойства которых больше не нужны). Интерфейсы сделают интерфейс столь же раздутым, что не решит проблему.
Каковы решения и рекомендации, используемые для решения этой проблемы?