Ho sentito parlare molto di come mantenere i metodi brevi e ho sentito molti programmatori dire che l'uso dei tag #region all'interno di un metodo è un segnale sicuro che è troppo lungo e dovrebbe essere rifatto in più modi. Tuttavia, mi sembra che ci siano molti casi in cui la separazione del codice con i tag #region all'interno di un metodo è la soluzione superiore per il refactoring in più metodi.
Supponiamo di avere un metodo il cui calcolo può essere separato in tre fasi piuttosto distinte. Inoltre, ognuna di queste fasi è rilevante solo per il calcolo del metodo questo , e quindi l'estrazione in nuovi metodi non ci consente di riutilizzare il codice. Quali sono, allora, i benefici dell'estrazione di ogni fase nel proprio metodo? Per quanto ne so, tutto ciò che otteniamo è una certa leggibilità e uno scope variabile separato per ciascuna fase (che aiuterà a evitare che le modifiche di una particolare fase possano rompere accidentalmente un'altra fase).
Tuttavia, entrambi possono essere raggiunti senza estrarre ciascuna fase nel proprio metodo. I tag Region ci permettono di comprimere il codice in una forma che sia leggibile (con l'ulteriore vantaggio che non dobbiamo più lasciare il nostro posto in questo file se decidessimo di espandere ed esaminare il codice), e semplicemente avvolgendo ogni fase in {}
crea il proprio ambito con cui lavorare.
Il vantaggio di farlo in questo modo è che non inquiniamo lo scope di livello di classe con tre metodi che sono in realtà rilevanti solo per il funzionamento interno di un quarto metodo. Il refactoring immediato di un metodo lungo in una serie di metodi brevi mi sembra il riutilizzo del codice equivalente all'ottimizzazione prematura; state introducendo una complessità extra per affrontare un problema che in molti casi non si pone mai. È sempre possibile estrarre una delle fasi in un proprio metodo in un secondo momento, qualora si presentasse l'opportunità di riutilizzare il codice.
Pensieri?