Sono l'unico sviluppatore di un progetto che, come per qualsiasi progetto software, potrebbe essere preso da qualcun altro in futuro.
Diciamo che ho usato lo schema X per implementare la funzione A. Dopo aver sviluppato e terminato la funzione, mi rendo conto che potrei implementare la stessa funzione usando il pattern Y, che ho appena imparato. Ma la funzionalità A funziona bene e il refactoring da X a Y richiede molto tempo e offre pochi vantaggi.
Quindi è il momento di implementare la funzione B. È simile ad A, ma questa volta voglio cogliere l'occasione per giocare con il pattern Y. Sono contento del risultato finale, meglio di quando faccio la funzione A, ma ora il codice utilizza due modelli diversi, X e Y, per caratteristiche simili.
Ma non c'è una vera ragione per usare modelli diversi, tranne per il fatto che quando costruivo la caratteristica A non ero abbastanza abile da usare lo stesso schema della caratteristica B.
Si noti che questa domanda non riguarda scegliere il modello giusto per un dato problema ; si tratta di due modelli coesistenti nel codice di base per risolvere problemi simili, che potrebbero essere ridotti a un dato tempo sufficiente per il refactoring.
- Il codice è olfattivo?
- Quali sono gli svantaggi di mantenere il codice sorgente come questo?
- Dovrei limitarmi a utilizzare un solo pattern? cioè il refactor A per usare Y o continuare a usare X quando si scrive B?
- In che modo, nella fonte, posso comunicare che la ragione per cui esistono due modelli diversi per funzionalità simili è essenzialmente senza motivo?
- Mi preoccupo troppo di ciò che il prossimo sviluppatore pensa del mio codice?