We currently have a complex VC++ software application, which uses a
library like ObjectARX to build the dll. I feel there are many
features in C# like Collections, Generics, and other libraries which
can be used to build the current application in a better and efficient
way.
(Nota: ObjectARX è l'API di estensione per AutoCAD, quindi OP sta chiedendo di un'applicazione specifica di un dominio che richiede conoscenze specializzate nel dominio approfondito.)
Fai un respiro profondo e chiediti se la complessità del software proviene dal dominio (progettazione assistita dal computer e geometria computazionale) o dalla scelta della lingua. Se la complessità deriva dal dominio, cambiare la lingua potrebbe non rendere il tuo lavoro più semplice.
Caso in questione, usando un esempio stupido: un Polygon
non è lo stesso di IList<Point2>
. In che modo un IList
sa come verificare la presenza di punti ripetuti? Segmenti che si intersecano? Incorporare un poligono 2D complanare in un piano nello spazio 3D?
Occasionalmente, la mancanza di zucchero sintattico in alcune lingue complicherà davvero lo sviluppo del software specifico del dominio. Un primo esempio è la funzione lambda. Con C ++ 11 questi zuccheri sintattici essenziali possono essere utilizzati per semplificare e modernizzare il codice. In questo caso, la modernizzazione del codice C ++ potrebbe essere una scelta migliore rispetto alla migrazione a C #.
Un'altra osservazione ad altri lettori: ogni versione di ObjectARX per Visual Studio è legata a una versione specifica di Visual Studio e non è compatibile né con le versioni precedenti né con quelle successive. A partire da ObjectARX 2013, è richiesto l'uso di VS2010 SP1. (Pertanto, OP non può facilmente raccomandare l'uso di VS2012 a meno che il venditore non rilasci una nuova versione di ObjectARX e il cliente (datore di lavoro dell'OP) vi aggiorni.) link
Fortunatamente, VS2010 SP1 supporta anche un utile sottoinsieme (ma non tutti) della sintassi C ++ 11. In particolare l'iteratore for-loop semplificherebbe un po 'il codice appena scritto. Tuttavia, il vantaggio potrebbe non giustificare la modifica del vecchio codice.
I have been thinking about it, but I am not sure on how to present it
to my Supervisor and colleagues.
Il modo migliore è chiedere solo in modo informale al proprio supervisore (idealmente l'architetto del software). È suo compito tenere d'occhio ogni possibilità, comprese le scelte di piattaforma, le migrazioni e la fattibilità a lungo termine del progetto.
Se effettivamente ti trovi più esperto del tuo supervisore / architetto del software (che è altamente improbabile), trova un altro lavoro.
I would appreciate any help, to help me think in the right direction
and highlight the points to bring it to the team.
Il mio suggerimento:
Roman wasn't built in a day.
In qualsiasi momento della tua ipotetica re-implementazione, l'applicazione nel suo insieme deve essere dimostrabile (almeno eseguibile e verificabile). Quindi, conterrà parti scritte in VC ++ e parti scritte in C #. Se puoi dimostrare che l'applicazione funziona ancora in modo soddisfacente (senza grossi problemi, problemi o inefficienze), hai trovato un "percorso nella giungla" dal presente del C ++ del progetto al futuro di C #.
Un foglio di lavoro di esempio:
- Supponiamo che il 5% del progetto sarà migrato in C #.
- Quali moduli o componenti del progetto sceglieresti di eseguire la migrazione a C #?
- In che modo interagiscono con il resto dell'applicazione?
- Prevedi qualche difficoltà?
- Ripeti la domanda per il 20%, 40%, 60%, 80% e 99%.
Un'altra importante domanda da porsi:
- Ci sono altri team in azienda (o clienti paganti) che dipendono dall'applicazione in C ++? Questi team accetteranno di migrare anche a C # o il tuo team sarà in grado di fornire l'interoperabilità per quel team?
Se hai fatto questo, presenta le tue scoperte all'architetto del software, che sarà quindi responsabile dell'identificazione dei blocchi stradali nelle restanti sezioni di questo percorso nella giungla.
Se non sai come C ++ e C # possono interoperare ... Ti suggerisco di chiudere la domanda APPENA POSSIBILE prima che un torrente di downvotes brucino i tuoi punti di reputazione guadagnati duramente ...