So che seguire ciecamente una "buona pratica" può ancora portare a una puzzolente pila di cagate che si attiene strettamente alle migliori pratiche. I principi SOLID sono proprio questo, principi. Non si applicano ad ogni situazione, ma sono ancora ottime euristiche per trovare possibili miglioramenti nel codice.Esistono strumenti di analisi statica che segnaleranno quanto strettamente seguano i principi SOLID?
Il lato negativo per loro è che a volte richiedono un'analisi approfondita del codice sorgente per applicarli. Io, come la maggior parte dei programmatori, sono costantemente alla ricerca di modi più efficienti di fare le cose, quindi sono curioso di sapere se qualcuno ha sentito parlare di uno strumento di analisi che tenta di verificare l'applicazione dei principi SOLID (o la loro mancanza).
SRPLa responsabilità singolo Principio
Una classe dovrebbe avere solo una ragione per cambiamento.
OCPL'aperto-chiuso Principio
entità software (classi, moduli, funzioni, etc.) devono essere aperte per estensione, ma chiuso per modifica.
LSPIl Liskov principio di sostituzione
sottotipi deve essere sostituibili i loro tipi di base.
ISPL'interfaccia segregazione Principio
I client non dovrebbero essere costretti a dipendere su metodi che non utilizzano. Le interfacce appartengono ai client, non alle gerarchie .
DIPIl principio di inversione delle dipendenze
Abstractions non dovrebbe dipendere dettagli. I dettagli dovrebbero dipendere dalle astrazioni .
-Da Agile Principi, Patterns and Practices
* Il lato negativo è che richiedono talvolta un'analisi approfondita del codice sorgente per applicarle. * Se un'analisi del codice (indipendentemente dalla profondità) sarebbe sufficiente, tali strumenti sarebbero possibili, tuttavia esaminando il codice non è abbastanza. – Wolf
@Wolf Nel contesto di quella particolare frase intendevo un'analisi _umana basata su comprensione, intuizione e intuizione. –
Si intendono gli schemi recuperati dall'analisi del codice umano la cui presenza viene successivamente verificata in modo automatico? – Wolf