La risposta a questo è semplice.
La coerenza è di fondamentale importanza.
ma viene fornito con un avvertimento ...
Tu e il tuo collaboratore siete probabilmente ossessionati dal tipo sbagliato di consistenza
Le implementazioni sono usa e getta. Possono essere completamente revisionati con diversi gradi di facilità a seconda della qualità e della completezza della suite di test. Preoccuparsi di cose come "Dovrebbe essere una proprietà?", "Il codice di Thins non dovrebbe usare LINQ invece di un costrutto di livello inferiore?" ha un valore dubbio. È molto difficile legare qualsiasi misura al valore di coerenza a livello di implementazione. Una domanda molto migliore da porre a questo livello è "Questo codice funziona come pubblicizzato?". TL: la coerenza dell'implementazione DR è quella in cui le "piccole menti" prendono il loro hobgoblin.
Perché la coerenza non è importante qui? Le implementazioni di solito hanno un piccolo numero di contributori. La maggior parte dei metodi sono scritti e mai più toccati. Del codice rimanente il numero di metodi che hanno due contributori è quasi certamente una maggioranza. Questo modello continua ad infinitum . In questo contesto, la coerenza non è così importante. Se il periodo di validità del codice è piuttosto piccolo ( alcuni anni ) i guadagni dalla consistenza aggressiva sono probabilmente un non fattore.
Questo non vuol dire che dovresti impazzire nelle tue implementazioni. Piuttosto, dire che un design bello, pulito e semplice sarà un ordine di grandezza più prezioso per il tuo ipotetico futuro manutentore rispetto al metodo di consistenza della piastra di caldaia sciocco. Questo ci porta al punto reale ...
Le API non sono usa e getta.
Questo è tutto livello di codice API, servizi Web, SDK ecc. Questi devono, devono, DEVE essere coerenti. I guadagni di produttività di questa varietà di consistenza sono enormi per una serie di motivi:
Test di integrazione:
Se mantieni la coerenza delle tue API puoi creare suite di test di integrazione. Ciò consente agli sviluppatori di scambiare liberamente i dettagli di implementazione e ottenere una convalida immediata. Vuoi scambiare i tuoi copioni con quelli di LINQ? I test di integrazione sono eseguiti? Fornisce anche la convalida quando si prepara per andare in produzione. Poiché i computer sono veloci, un singolo laptop può preformare il lavoro di migliaia di tester che eseguono compiti banali. È equivalente ad aumentare considerevolmente l'organico della tua organizzazione.
Produttività
Quando le API sono coerenti, puoi fare ipotesi su come utilizzare un'API seguendo semplicemente ciò che hai imparato sull'utilizzo di altre parti dell'API. Questo perché l'API offre un "look and feel" naturale e coerente. Significa che i tuoi clienti passano meno tempo a setacciare la documentazione. L'onboarding è più facile ed economico. Vengono poste meno domande alle persone che hanno sviluppato l'API. La coerenza rende tutti un vincitore
Perché la coerenza è importante in questo scenario? Perché le API hanno esattamente l'opposto problema delle implementazioni. Il numero di persone che li usano è in genere molto maggiore del numero di persone che contribuiscono alle loro implementazioni. Piccoli guadagni da una piccola consistenza vengono moltiplicati e i costi di mantenimento di tale consistenza vengono ammortizzati.
Conclusione
La coerenza è costosa. Di fronte riduce la produttività. Limita gli sviluppatori e rende le loro vite più difficili. Pone limitazioni sul modo in cui possono risolvere un problema, a volte costringendoli a risolverlo in modo non ottimale. Questo è spesso per motivi che non capiscono, sono mal concepiti o non sono a conoscenza (contratti, politiche organizzative o interorganizzative più grandi).
Raymond Hettinger ha fatto alcuni punti eccellenti nel suo discorso Pycon 2015 sull'uso della guida in stile PEP8 per i team di programmatori Python. Ha dimostrato che l'ossessione per la coerenza stilistica su un pezzo di codice ha fatto sì che i revisori del codice perdessero i difetti logici e di progettazione. La sua ipotesi può essere riassunta come trovare incongruenze stilistiche è facile; determinare la vera qualità di un pezzo di codice è difficile
Il punto qui è critico. Individuare dove è importante la coerenza e proteggerlo in modo aggressivo. Dove non è importante non perdere tempo. Se non è possibile fornire un metodo oggettivo per misurare il valore della consistenza (nei casi sopra "effettivi", costo in funzione della produttività) e non è possibile dimostrare che i rendimenti sono sostanziali, è probabile che si stia facendo un cattivo servizio a la tua organizzazione.