Modifiche automatiche di propagazione

0

Quando si lavora su più progetti simili, ci sono spesso modifiche che non possono essere estratte in una libreria, ma dovrebbero essere applicate alla maggior parte dei progetti. Intendo cambiamenti come una struttura di directory modificata, alcune configurazioni comuni, codice ui simile, ecc.

La strategia più basilare è copiare un nuovo progetto dall'ultimo finito e buttare fuori la logica del business. Il problema è che i miglioramenti al nuovo progetto non torneranno a quelli più vecchi.

Una strategia leggermente migliore è quella di creare un repository standard, clonare ogni nuovo progetto da esso. Quindi i bit riutilizzabili possono essere estratti dal progetto più recente nel boilerplate e quindi inseriti nei progetti più vecchi. Certo, la fusione potrebbe essere complicata, ma ho avuto questa strategia che funziona abbastanza bene per me. Spingere le modifiche è ancora troppo lavoro.

Esiste una strategia per automatizzare la propagazione di alcune modifiche su più progetti?

    
posta Karolis Juodelė 14.07.2014 - 14:52
fonte

2 risposte

2

Ciò a cui ti riferisci essenzialmente è una piattaforma. Mentre vedo che è usato per "spingere" da un certo scheletro del progetto, con un po 'di lavoro, puoi trasformarlo in una libreria di piattaforme. I vantaggi sono che puoi semplicemente aggiornare la libreria per applicare le modifiche a qualsiasi progetto a cui stai lavorando, e qualsiasi progetto che è meglio non toccare può rimanere con una versione specifica della piattaforma.

Per fare in modo che funzioni, devi dare un'occhiata a una classe template e trasformarla in una classe che può essere semplicemente estesa per ricevere la maggior parte dei suoi benefici. Oppure, nel caso dell'uso specifico di una classe che ritieni possa essere utile in altri progetti, generalizza tutte le sue funzionalità più comuni e di nuovo, inseriscile in una classe che può essere semplicemente estesa in seguito. Se hai la generazione di codice (eviterei se possibile, ma supponendo che tu non possa farlo), prova a farlo interagire direttamente con le tue classi di piattaforma o, almeno, non ti impedirà in seguito di estendere la funzionalità nelle classi che ereditano da loro. Inoltre, ti consiglio vivamente di assegnare versioni alle tue piattaforme, anche se inizialmente non le usi. Potrebbero tornare utili in seguito per sapere quali funzioni sono consentite nella piattaforma.

I file di risorse come le librerie possono essere caricati automaticamente dalla piattaforma, il cui codice si trova all'interno della piattaforma stessa. Pertanto, qualsiasi progetto che utilizza tale piattaforma deve semplicemente seguire le linee guida per una gerarchia di piattaforma standard al fine di caricare correttamente queste risorse. Ad esempio, se la mia piattaforma cerca librerie in una cartella chiamata lib, le librerie che la piattaforma utilizza vengono messe in lib, e eventuali librerie aggiuntive possono essere aggiunte in seguito senza problemi aggiuntivi.

Per ogni dato progetto sotto una determinata piattaforma, l'aggiornamento della piattaforma è letteralmente una questione di aggiornamento della sua libreria di piattaforme. Per le situazioni in cui una piattaforma prevede determinati tipi di file in una determinata cartella che è stata modificata rispetto alla versione precedente, la piattaforma stessa può essere progettata per rinominare le cartelle più vecchie. Un esempio di questo potrebbe essere che hai deciso di gestire più profili di configurazione, uno in ogni cartella, ma si inizia con un file di configurazione. La tua piattaforma, una volta eseguita, potrebbe copiare tale configurazione nella propria cartella con i nomi dei profili di configurazione predefiniti. La piattaforma, dopo questa fase di inizializzazione, caricherà la configurazione nella propria cartella (forse assegnandone uno come profilo predefinito quando nessuno è specificato).

Sfortunatamente per situazioni in cui la piattaforma non può riempire gli spazi vuoti, sarai obbligato a correggere queste modifiche manualmente. Un buon modo per le piattaforme di versioni è considerare modifiche di versione importanti come modifiche alla piattaforma che richiedono un intervento manuale per farlo funzionare correttamente.

Tuttavia, tieni presente che le piattaforme sono notoriamente conosciute per la loro crescita piuttosto complessa, a causa del tentativo di soddisfare i requisiti di ogni progetto nella piattaforma. Questo può essere evitato semplicemente chiedendo a te stesso se una certa modifica apportata alla piattaforma è quella che la maggior parte dei tuoi progetti utilizzerà e quelli che non lo saranno non saranno interessati.

Inoltre, un altro consiglio prima di iniziare è, se non lo hai già fatto, ottenere l'input dei tuoi colleghi su quale dovrebbe essere la gerarchia di progetto standard de facto prima di crearne una tu stesso, altrimenti probabilmente vedrai i tuoi colleghi programmatori costruire i loro progetti nel modo in cui loro preferiscono, il che sconfigge l'intero scopo di avere una piattaforma.

    
risposta data 14.07.2014 - 16:17
fonte
0

Alcuni ambienti / IDE consentono modelli di progetto. A seconda del tuo ambiente questo è fatto in modo diverso, ma sarei sorpreso che non sarebbe disponibile.

Quindi puoi creare un progetto che contiene questo modello e cambiarlo come faresti con qualsiasi altro progetto. Ovviamente, una volta avviato un progetto, dovresti unire manualmente le modifiche, ma almeno ogni nuovo progetto inizierà con le ultime e le più grandi, anche se a volte sarebbe anche possibile automatizzare gli aggiornamenti.

  • Modelli di progetto in Visual Studio
  • Anche gli archisipi di Maven sono abbastanza buoni
  • Nuget potrebbe fare il lavoro anche nel mondo .Net. Ha il vantaggio aggiuntivo di aggiornare i progetti esistenti attraverso alcuni script di PowerShell di aggiornamento.
  • Eclipse può anche fornire modelli, puoi arrivare fino alla creazione di un plug-in per mantenere aggiornati i tuoi progetti.

Questi sono quelli che mi vengono in mente, con un po 'di ricerca e maggiori dettagli sulla tua situazione specifica potremmo trovare soluzioni mirate.

    
risposta data 14.07.2014 - 16:55
fonte

Leggi altre domande sui tag