Situazione:
La mia app esiste come versione standard e di marca, la versione di marca ha alcune funzionalità aggiuntive minuscole, ma la maggior parte delle cose è la stessa.
In questo momento ho una libreria di base con popup e elementi visivi che posso usare in ogni app che faccio. Poi ci sono diversi moduli (librerie) (funzionalità dell'app "cose che si possono fare") e due progetti di app finali.
Un modulo, nella versione di marca, può utilizzare l'hardware ausiliario (ah). Quindi la mia idea era di suddividere il modulo in un modulo base della libreria e creare una libreria aggiuntiva per l'ah e quindi creare due moduli uno con e uno senza ah. In questo modo qualsiasi modifica di base del modulo verrebbe incorporata in tutte le app, ma quella con il marchio avrebbe scelto il modulo con ah e l'app standard avrebbe preso quella senza.
C'è una possibilità che una seconda versione di marca arriverà presto, con alcuni moduli diversi e forse diversi hardware usati da alcuni moduli. Dovrei dividermi ancora di più e temo per il caos. Ma l'unico altro modo in cui vedo è che io creo omni-moduli in grado di gestire ogni possibile variazione e verranno istanziati con una selezione delle funzionalità da contenere. Ma è chiaro che "brand a" non utilizzerà mai l'hardware di "marca b" e viceversa, quindi la selezione sarà solo "standard, a o b", ma il modulo è progettato per gestirli tutti i quali potrebbero gonfiare il modulo.
Quindi, come avrei suddiviso le mie librerie e il mio modulo per gestire questo senza molto caos?
modifica
La mia preoccupazione principale è la manutenzione a lungo termine. Dopo 2 anni qualcuno vuole aggiungere una funzionalità alla versione di marca xyz e devo capire in quale libreria / a quale livello implementarla per non toccare altre versioni.
Avere molte librerie può rendere difficile capire le relazioni / dipendenze tra di loro, ma ciò può essere compensato con una documentazione adeguata. Avere tutto in un solo lib / modulo significa che ho bisogno di seguire le variabili che abilitano / disabilitano le funzionalità per scoprire dove cambiano / fanno cose.
Ma fino a che punto mi divido?