DRY esiste per un motivo, poiché più posti esiste lo stesso codice, più possibilità ci sono di bug derivanti da uno di quei posti che non vengono modificati quando il sistema deve cambiare. È anche, ovviamente abbastanza, più facile da testare se si dispone di una determinata parte del codice in un unico punto. Di conseguenza, nella maggior parte dei casi in cui ho bisogno di fare qualcosa più di una volta, lo romperò nella sua funzione o metodo.
Un luogo in cui ritengo che la ripetizione sia accettabile, o addirittura utile, è quando si ha lo stesso codice che funziona con intenti diversi, quindi si potrebbe avere una funzione o un metodo che mostra un comportamento molto simile, ma in un punto fa parte di il sistema per il recupero di un utente da un sistema di autenticazione e in un altro sta recuperando alcuni dati da un negozio. Anche se il codice è identico, questo può esistere in luoghi diversi perché fa parte di flussi diversi e con queste intenzioni divergenti è molto probabile che divergano a un certo punto nella funzionalità. Se condividessi il codice a quel punto, dovrei rendere le cose più complesse e meno leggibili.
Detto questo, se ho lo stesso codice o molto simile in più posti che inizia a sentire l'odore di WET per me e certamente penserò se potrei astrarre il comportamento pertinente in un modo che faciliterebbe la condivisione.