Pregunta

Actualmente estoy trabajando en un proyecto que admitirá múltiples especificaciones de escritura de archivos (imagínese si tuviera que admitir algo como XML 1.0, XML 2.0, XML 3.0, etc.) llamado ADIF. Actualmente hay dos estándares (versión 1.0 y versión 2.2.2), y ambos se usan comercialmente y todavía se usan mucho.

La versión de especificación 2.2.2 incorpora gran parte de la versión 1.0, pero existen algunas pequeñas diferencias que descartan algunas herencias y otras herramientas de OOP.

¿Cómo organizaría su proyecto para admitir versiones anteriores, y continuar con los nuevos estándares?

  • Espacios de nombres (Standard.Version1, Standard.Version222, Standard.Version223 (¿próxima versión?), etc.) en una biblioteca de una sola clase? Parece descuidado.
  • ¿Biblioteca de clases separada para cada uno en la misma solución (Version222.dll, Version223.dll, etc.)? Parece excesivo.
  • etc.

Tengo la intención de implementar algún código que se convierta de una versión a otra.

Básicamente, estoy buscando algunos consejos sobre cómo organizar mejor este tipo de proyecto.

http://www.adif.org/

¿Fue útil?

Solución

¿Dijiste que no hay una buena jerarquía de herencia que puedas implementar?

Si es así, recomendaría que siga la técnica del espacio de nombres para su biblioteca, que puede usar cualquier comunalidad posible dentro del dll para reducir la carga de trabajo por sí mismo. Tener dos api hará que sea mucho más fácil para usted probar y también lidiar con problemas relacionados con las diferencias entre versiones.

es decir su api de la versión 2.2.2 solo aceptaría objetos de la versión 2.2.2 para evitar problemas en la biblioteca. Buena suerte con lo que implementes :)

Otros consejos

  

La versión de especificación 2.2.2 incorpora gran parte de la versión 1.0, pero existen algunas pequeñas diferencias que descartan algunas herencias y otras herramientas de OOP.

La composición de objetos puede ser una herramienta mucho más poderosa para OOP que la herencia, que es un uso excesivo de la OMI.

¿Qué formas puede encontrar para dividir el problema en subsistemas más simples?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top