Ho incontrato il seguente problema molte volte in varie forme nella mia carriera di programmatore. Come semplice esempio, considera quanto segue:
Diciamo che esiste un metodo (B) che potrebbe differire in base alle esigenze del cliente. Questo potrebbe essere per un numero qualsiasi di motivi. Il buon senso ti dice che come stanno le cose ora, dovresti scriverli come metodo comune e aggiungere il codice di diramazione in futuro per gestire eventuali casi limite futuri.
Customer 1: A-->B-->C
Customer 2: A-->B-->C
Tuttavia, la tua esperienza ti dice che è probabile che questo particolare bit di codice cambi, quindi sarebbe più facile avere metodi separati (B1 e B2) e cambiare la logica per un cliente piuttosto che aggiungere continuamente il metodo di creazione del codice derivato ( B) non generico.
Customer 1: A-->B1-->C
Customer 2: A-->B2-->C
Ci sono delle regole empiriche che possono essere applicate in questi casi o ogni caso deve essere preso nel merito?
Per inciso, ho incontrato un sacco di persone che sostengono fermamente un approccio rispetto all'altro e posso vedere i meriti di entrambi. Ma sicuramente c'è una via di mezzo che può essere raggiunta sulla base di argomenti ragionati?