Pensa innanzitutto al problema in questione. Se applichi ciecamente i principi di YAGNI o SOLID, puoi farti male in seguito. Qualcosa che spero che tutti noi possiamo capire è che non esiste un approccio progettuale "unico" che si adatti a tutti i problemi. Puoi vedere la prova di ciò quando un negozio vende un cappello pubblicizzato come "taglia unica", ma non si adatta alla tua testa. È troppo grande o troppo piccolo.
Invece, è meglio comprendere i principi e i problemi che SOLID sta tentando di risolvere; così come i principi e i problemi che YAGNI sta tentando di affrontare. Scoprirai che uno riguarda l'architettura della tua applicazione e l'altro riguarda il processo di sviluppo nel suo complesso. Anche se in alcuni casi possono esserci sovrapposizioni, sono problemi distintamente diversi.
YAGNI (che non ne avrò bisogno [abbreviato acronimo americano]) si preoccupa di risparmiare tempo per gli sviluppatori aggiungendo fondamenta di cemento armato rinforzate in acciaio a un ponte destinato esclusivamente a un torrente largo 3 piedi quando un ponte di legno più semplice andrà bene. Se stiamo attraversando un fiume largo un miglio e abbiamo bisogno di supportare diversi rimorchi per trattori, ovviamente avremmo bisogno di un lavoro di fondazione extra. In sostanza, YAGNI ti sta dicendo di guardare l'immagine e il design più grandi per le esigenze attuali . Sta affrontando il problema di creare qualcosa di troppo complicato perché stiamo anticipando una serie di potenziali esigenze che il cliente non ha ancora identificato.
SOLID si occupa del modo in cui ci assicuriamo che i pezzi del ponte si adattino correttamente e possano essere mantenuti nel tempo. È possibile applicare i principi SOLID al ponte in legno e al ponte in calcestruzzo rinforzato in acciaio.
In breve questi due concetti non sono necessariamente in conflitto l'uno con l'altro. Quando ti imbatti in una situazione in cui credi di esserlo, è il momento di dare un'occhiata al quadro generale. A seconda della tua conclusione, potresti decidere di eliminare una parte dei principi SOLID o potresti decidere che ne hai davvero bisogno.