Domanda

Attualmente sto lavorando a un progetto che supporterà più specifiche di scrittura di file (immagina se dovessi supportare qualcosa come XML 1.0, XML 2.0, XML 3.0, ecc.) chiamato ADIF. Attualmente esistono due standard (versione 1.0 e versione 2.2.2), entrambi utilizzati commercialmente ed entrambi ancora ampiamente utilizzati.

La specifica versione 2.2.2 incorpora gran parte della versione 1.0 ma ci sono alcune lievi differenze che escludono alcune eredità e altri strumenti OOP.

Come organizzeresti il ??tuo progetto per supportare le versioni precedenti, ma continui a tenere il passo con i nuovi standard.

  • Spazi dei nomi (Standard.Version1, Standard.Version222, Standard.Version223 (prossima versione?), ecc.) in una libreria a singola classe? Sembra sciatto.
  • Libreria di classi separata per ciascuna nella stessa soluzione (Version222.dll, Version223.dll, ecc.)? Sembra eccessivo.
  • ecc.

Intendo implementare del codice che convertirà da una versione all'altra.

Fondamentalmente, sto cercando alcuni consigli su come organizzare al meglio questo tipo di progetto.

http://www.adif.org/

È stato utile?

Soluzione

Hai dichiarato che non esiste una buona gerarchia ereditaria che puoi implementare?

In tal caso, ti consiglio di seguire la tecnica dello spazio dei nomi per la tua libreria, che può usare qualsiasi comunanza possibile all'interno della dll per ridurre il carico di lavoro. Avere due API ti renderà significativamente più facile il test e risolverà anche i problemi relativi alle differenze tra le versioni.

vale a dire. la tua versione 2.2.2 api accetterebbe solo oggetti della versione 2.2.2 per prevenire problemi nella libreria. Buona fortuna con qualunque cosa tu attui :)

Altri suggerimenti

  

La specifica versione 2.2.2 incorpora gran parte della versione 1.0 ma ci sono alcune lievi differenze che escludono alcune eredità e altri strumenti OOP.

La composizione degli oggetti può essere uno strumento molto più potente per OOP rispetto all'eredità, che è IMO abusato.

Quali modi puoi trovare per scomporre il problema in sottosistemi più semplici?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top