Di solito passo attraverso diversi passaggi con questo problema, fermandomi quando non riesco a capire come andare oltre.
Innanzitutto, fai ciò che hai fatto. Vai duro con ASCIUTTO. Se non finisci con un grosso pasticcio peloso, hai finito. Se, come nel tuo caso, non hai codice duplicato ma ogni booleano ha il suo valore verificato in 20 posizioni diverse, vai al passaggio successivo.
Secondo, dividi il codice in blocchi. I booleani sono tutti referenziati una sola volta (beh, forse due volte a volte) per dirigere l'esecuzione nel blocco di destra. Con due booleani, si finisce con quattro blocchi. Ogni blocco è quasi identico. ASCIUTTO è andato. Non rendere ciascun blocco un metodo separato. Sarebbe più elegante, ma inserire tutto il codice in un unico metodo rende più facile, o persino possibile, per chiunque stia facendo manutenzione per vedere che devono fare ogni cambiamento in quattro punti. Con un codice ben organizzato e un monitor alto, le differenze e gli errori saranno quasi ovvi. Ora disponi di codice e manutenibile più veloce rispetto al pasticcio originale ingarbugliato.
Terzo, prova ad afferrare linee di codice duplicate da ognuno dei tuoi blocchi e trasformali in semplici e semplici metodi. A volte non puoi fare nulla. A volte non puoi fare molto. Ma ogni cosa che fai ti riporta indietro verso DRY e rende il codice un po 'più facile da seguire e più sicuro da mantenere. Idealmente, il tuo metodo originale potrebbe non avere codice duplicato. A quel punto, potresti voler dividerlo in diversi metodi senza i parametri booleani o potresti non farlo. La convenienza del codice chiamante è ora la preoccupazione principale.
Ho aggiunto la mia risposta al gran numero già qui a causa del secondo passaggio. Odio il codice duplicato, ma se è l'unico modo intelligibile per risolvere un problema, fallo in modo che chiunque possa sapere a colpo d'occhio cosa stai facendo. Utilizza più blocchi e un solo metodo. Rendi i blocchi il più identici possibile nei nomi, spaziatura, allineamenti, ... tutto. Le differenze dovrebbero poi saltare al lettore. Potrebbe rendere ovvio come riscriverlo in modo DRY e, in caso contrario, mantenerlo sarà ragionevolmente semplice.