La risposta è semplice.
La coerenza è di fondamentale importanza.
ma viene fornito con un avvertimento ...
Tu e il tuo collega siete probabilmente ossessionati dal tipo sbagliato di coerenza
Le implementazioni sono usa e getta. Possono essere completamente revisionati con vari gradi di facilità a seconda della qualità e della completezza della suite di test. Preoccuparsi di cose come "Dovrebbe essere una proprietà?", "Il codice non dovrebbe usare LINQ invece di un costrutto di livello inferiore?" ha un valore dubbio. È molto difficile legare qualsiasi misura al valore della coerenza a livello di implementazione. Una domanda molto migliore da porre a questo livello è "Questo codice funziona come pubblicizzato?". TL; coerenza nell'implementazione della DR è dove le "piccole menti" si mettono in mostra.
Perché la coerenza non è così importante qui? Le implementazioni di solito hanno un numero esiguo di collaboratori. 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 all'infinito . In questo contesto la coerenza non è poi così importante. Se la durata di conservazione del codice è piuttosto ridotta ( alcuni anni ), i guadagni derivanti dalla coerenza aggressiva sono probabilmente un fattore irrilevante.
Questo non vuol dire che dovresti impazzire nelle tue implementazioni. Piuttosto è per dire che un design piacevole, pulito e semplice sarà ordini di grandezza più preziosi per il tuo ipotetico manutentore futuro rispetto alla stupida consistenza della piastra della caldaia metodo per metodo. Questo ci porta al punto reale ...
Le API non sono usa e getta.
Questo è tutto il livello di codice API, servizi web, SDK ecc. Questi devono, devono, DEVONO essere coerenti. I guadagni di produttività derivanti da questa varietà di coerenza sono enormi per una serie di motivi:
Test di integrazione:
Se mantieni coerenti le tue API, puoi creare suite di test di integrazione. Ciò consente agli sviluppatori di scambiare liberamente i dettagli dell'implementazione e ottenere una convalida immediata. Vuoi scambiare le tue cazzate con LINQ? I test di integrazione vengono eseguiti? Fornisce anche la convalida quando si prepara per andare alla produzione. Poiché i computer sono veloci, un singolo laptop può preformare il lavoro di mille tester che eseguono attività banali. È equivalente ad aumentare considerevolmente il personale dell'organizzazione.
Produttività
Quando le API sono coerenti, puoi fare ipotesi su come utilizzare un'API semplicemente seguendo ciò che hai appreso sull'uso di altre parti dell'API. Questo perché l'API offre un "look and feel" naturale e coerente. Significa che il tuo cliente impiega meno tempo a vagliare la documentazione. L'onboarding è più semplice ed economico. Vengono poste meno domande alle persone che hanno sviluppato l'API. La coerenza rende tutti vincitori
Perché la coerenza è importante in questo scenario? Perché le API hanno l'esatto problema opposto delle implementazioni. Il numero di persone che li utilizzano è in genere molto maggiore del numero di persone che contribuiscono alle loro implementazioni. I piccoli guadagni derivanti da una certa coerenza vengono moltiplicati e i costi di mantenimento di tale coerenza vengono ammortizzati.
Conclusione
La coerenza è costosa. A prima vista, riduce la produttività. Limita gli sviluppatori e rende le loro vite più difficili. Pone delle limitazioni sui modi in cui possono risolvere un problema a volte costringendoli a risolverlo in modo non ottimale. Questo è spesso per motivi che non comprendono, sono mal concepiti o non sono a conoscenza di (contratti, politiche organizzative o interorganizzative più grandi).
Raymond Hettinger ha fatto alcuni punti eccellenti nel suo discorso di Pycon 2015 sull'uso della guida di 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 manchino gravi problemi logici e di progettazione. La sua ipotesi può essere riassunta in quanto è facile trovare incoerenze stilistiche; determinare la qualità reale di un pezzo di codice è difficile
Il punto qui è critico. Individua dove è importante la coerenza e proteggila in modo aggressivo. Dove non è importante non perdere tempo. Se non sei in grado di fornire un modo oggettivo per misurare il valore della coerenza (nei casi di cui sopra "contabilità effettiva", costo in funzione della produttività) e non riesci a dimostrare che i rendimenti sono sostanziali, probabilmente stai facendo un disservizio a la tua organizzazione.