Sviluppo software basato su un'implementazione di riferimento [chiuso]

1

Diciamo che ho una libreria "A2" come dipendenza in un progetto. La libreria "A2" deriva dalla libreria "A1" (A2 è un fork di A1 con alcune modifiche al codice sorgente originale) in cui qualcuno ha apportato poche modifiche al codice sorgente della libreria "A1".

Diciamo che c'è una nuova versione di "A1" Voglio usare la nuova versione ma nessuna modifica al suo codice sorgente.

Sto pianificando di identificare quali modifiche sono state apportate alla libreria originale al momento del rilascio della libreria "A2" e di decorare l'ultima versione della libreria con tali modifiche. È un buon approccio per risolvere questo? se no qualcuno può suggerire l'approccio migliore per risolvere questo tipo di problemi?

    
posta Kanishka Dilshan 06.06.2014 - 05:01
fonte

1 risposta

3

Is it a good approach to solve this?

Beh, probabilmente non è un buon modo, ma la tua unica scelta ragionevole per risolverlo nella situazione data. Ma aspettati che succeda di nuovo quando verranno rilasciate la versione V3, V4, V5, ... di lib A1 - finché non prenderai ulteriori misure, avrai sempre lo sforzo di unire le modifiche di A2 nel codice di A1. Se A2 differisce solo leggermente da A1, e le modifiche sono ben documentate, potrebbe andare bene. Può anche essere utile l'uso corretto di un sistema di controllo della versione o almeno uno strumento diff-merge per generare un set di patch per A1- > A2 (almeno, quando A1 non cambia da versione a versione così tanto che la patch- set non può più essere applicato).

L'alternativa migliore sarebbe quella di contattare l'autore di A1 in anticipo e chiedergli gentilmente se può cambiare A1 in un modo che non ti servirà più in futuro. Potrebbe prendere in considerazione l'integrazione di alcune delle funzionalità aggiuntive di A2 o (se ciò non è ragionevole) per modificare l'interfaccia di A1 in un modo tale da consentire l'aggiunta di estensioni senza la necessità di modificare A1. L'obiettivo dovrebbe essere quello di creare A2 come libreria separata che collega semplicemente A1, non modificata. Forse può fornire un meccanismo "hook" o "plug-in", o forse semplicemente rendere pubblici alcuni metodi interni, questo dipende completamente dal design di A1 e dai tuoi requisiti per A2.

    
risposta data 06.06.2014 - 11:52
fonte

Leggi altre domande sui tag