En el proyecto en el que trabajo, gestionamos la facturación médica.Versiones de clase para admitir la compatibilidad con versiones anteriores
Cada vez que el estado realiza un cambio en la forma oficial (que representan nuestras clases de datos), para mantener la compatibilidad con versiones anteriores, agregamos las nuevas propiedades pero dejamos las antiguas intactas y tenemos una versión de documento propiedad que se utiliza para determinar qué validación se realiza y las acciones de UI para mostrarla.
Esto ha llevado a clases infladas durante la vida del proyecto (casi 5 años de cambios ordenados por el estado), y simplemente no es compatible con los formatos de documentos antiguos.
Me gustaría intentar crear una nueva clase para cada versión del documento, pero incluso así tendremos varias copias de código muy similar (aunque ligeramente modificado). Y los nombres de clase como ProgressNoteV16, ProgressNoteV17 tienen un aspecto horrible.
No se puede usar la herencia, porque de todos modos se produciría el mismo problema (las clases tienen propiedades que ya no se necesitan). Las interfaces harían que la interfaz estuviera tan hinchada que no resolvería el problema.
¿Cuáles son las soluciones y las mejores prácticas para resolver este problema?
Gracias, tenemos la capacidad de repensar nuestro diseño debido a una posible revisión en la forma en que el gobierno federal está haciendo las cosas. Este esquema ayudará enormemente a explorar las posibilidades. –
NP. Y buena suerte. tener la capacidad de llegar a algunos otras agencias como DHS (Servicios Humanos) o DIS (Servicios de Inmigración) tienen este problema a gran escala y podrían brindarle buena información. – GrayWizardx
Me encontré con esto porque empecé a ver 'fechas' aparecen en nuestros nombres de clase, es decir, ClassA, ClassA20100901, ClassA20101201. Me fue explicado como: ClassA es válido/usado hasta el 1 de septiembre, luego se usaría Class20100901, luego, el 1 de diciembre, la última clase se activará. Este es un GRAN olor que algo está mal. Voy a digerir esto y proponer esto al equipo. Proporcionaré una respuesta si encontramos algún consejo. ¡Gracias! –