Utilizza la modularità della tua lingua per organizzare una linea di prodotti software , piuttosto che la versione sistema di controllo. Molto semplicemente, il processo di unione non è qualcosa che vuoi essere una parte regolare della costruzione dei tuoi prodotti. Piuttosto, il design del tuo prodotto dovrebbe già tenerne conto .
Considerando la famiglia di prodotti software a livello di progettazione, ciò renderà molto più chiaro agli sviluppatori quali sono i punti di variazione: i punti di variazione saranno evidenti nella progettazione, piuttosto che impliciti come differenze di codice sorgente.
Ciò faciliterà anche i test degli sviluppatori: qualsiasi modifica apportata dovrebbe essere testata su entrambi i prodotti. Non vorrai apportare la stessa modifica due volte o fondere e annullare costantemente le modifiche man mano che si verificano.
Consulta la documentazione sulle linee di prodotti software per vedere le migliori pratiche per la tua lingua. Utilizzando queste tecniche, è possibile creare un terzo "prodotto" che è ottimizzato per il test. Ad esempio, l'utilizzo di dependency injection può essere il tuo meccanismo per entrambi i test e per avere varianti dello stesso programma.