basi di codice per le versioni desktop e mobile della stessa app

3

Ho scritto una piccola applicazione desktop Java Swing. Sembra un passo naturale portarlo su Android poiché sono interessato a imparare come programmare per quella piattaforma. Credo di poter riutilizzare alcuni dei miei codici esistenti. (Ovviamente, esattamente il grado di riutilizzo che posso ricavarne sarà determinato solo quando avvierò la codifica dell'app Android.)

Attualmente sto ospitando la mia app Java Swing su Sourceforge.net e utilizzo Git per il controllo della versione. Mentre inizio a creare l'app per Android, sto considerando due opzioni:

  1. Aggiungi il codice Android al mio repository esistente, creando directory separate e pacchetti Java per il codice e le risorse specifiche per Android.

  2. Crea un nuovo progetto Sourceforge (o persino ospitane uno nuovo) e crea un nuovo repository Git.

    a. Con un nuovo repository, posso semplicemente aggiungere i file dal mio progetto originale che riutilizzerò. (Non mi piace particolarmente questa opzione in quanto sarà difficile modificare entrambe le copie dello stesso file in entrambi i repository.)

    b. Oppure posso diramare il repository originale. Ciò aggiunge la difficoltà di unire le modifiche dei file di origine condivisi.

Per lo più sto cercando di decidere tra le scelte 1. e 2b. Se ho intenzione di diramare il repository esistente, quali sono i vantaggi di ospitarlo come progetto SF separato (o anche di usare un altro servizio di hosting OSS) invece di mantenere tutto il mio codice sorgente nel corrente progetto SF?

    
posta Code-Guru 11.09.2012 - 19:55
fonte

3 risposte

3

In realtà sto lavorando alla stessa identica cosa al momento. Personalmente, trovo più semplice tenere tutto in un unico repository, un ramo. Uso pacchetti java separati per codice comune, swing e android. Ho interfacce per tutte le chiamate dal pacchetto comune nei pacchetti della GUI, quindi il codice comune non ha idea di quale GUI sia in esecuzione.

Il vantaggio di questo approccio è che ti costringe a mantenere sincronizzate le tue basi di codice, una specie di integrazione continua personale. Se le tue versioni non sono isolate l'una dall'altra nel controllo del codice sorgente, è molto più semplice impedirle di divergere.

Non pensare a ciò che potrebbe bisogno in seguito. Pensa a ciò che funziona meglio per te adesso. La cosa più importante è rendere modulare il tuo codice. Se lo fai, metterlo in una libreria separata, un ramo separato o un repository separato se e quando ne hai bisogno in seguito è banale.

    
risposta data 11.09.2012 - 22:20
fonte
3

Il modo corretto per andare è dividere il codice in tre parti: comune, Swing-desktop, Android. Se si utilizza un repo o tre dipende da te; tre repository potrebbero avere senso se la loro natura sarà diversa: diversi committer, diverse politiche di branching / versioning, ecc. o forse i repos saranno enormi e non vorrete sovraccaricare gli sviluppatori di Swing-desktop dal download di Android codice e viceversa.

    
risposta data 11.09.2012 - 20:20
fonte
2

Il modo migliore per ottenere il riutilizzo del codice è prendere le funzioni comuni delle app ed estrarle in una libreria esterna collegata in entrambi i progetti, ciascuno nel proprio repository. Ciò elimina la duplicazione del codice attraverso la ramificazione o con un singolo repository complesso. Probabilmente ci sarà molto lavoro da fare a seconda di come è progettata la tua app per desktop, la quantità di sforzi necessari per ottenere tutto in questo modo potrebbe essere un grande investimento perché i rendimenti sono per lo più in termini di manutenibilità a lungo termine. / p>

La prossima opzione migliore sarebbe quella di mettere entrambi i progetti nello stesso repository, questo potrebbe diventare un po 'complicato da gestire se il tuo progetto cresce nell'ambito. Questa opzione sarebbe anche un po 'difficile da gestire se tu avessi mai coinvolto più persone, anche se questo potrebbe essere un problema per te.

Eviterei la ramificazione per creare l'app per Android che incontrerai problemi nel mantenere una singola versione corretta del tuo codice condiviso, e avrai porzioni considerevoli di ogni ramo che sono codice distinto separato che non dovrebbe mai essere unito insieme. Questo non è il modo in cui i rami sono progettati per funzionare e causerà mal di testa per te.

    
risposta data 11.09.2012 - 20:22
fonte

Leggi altre domande sui tag