Ho sentito molto parlare di abbreviare i metodi e ho sentito molti programmatori dire che usare i tag #region all'interno di un metodo è un segno sicuro che è troppo lungo e dovrebbe essere riformulato in più metodi. 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 di questo metodo, e quindi estrarle in nuovi metodi non ci consente di riutilizzare il codice. Quali sono, quindi, i vantaggi dell'estrazione di ogni fase nel suo metodo? Per quanto ne so, tutto ciò che otteniamo è una certa leggibilità e un ambito variabile separato per ogni fase (che aiuterà a impedire che le modifiche di una particolare fase interrompano accidentalmente un'altra fase).
Tuttavia, entrambi questi possono essere raggiunti senza estrarre ciascuna fase nel proprio metodo. I tag di regione ci consentono di comprimere il codice in un modulo che è altrettanto leggibile (con l'ulteriore vantaggio che non dovremo più lasciare il nostro posto in questo file se dovessimo decidere di espandere ed esaminare il codice) e semplicemente racchiudendo ogni fase in {}
crea il proprio ambito con cui lavorare.
Il vantaggio di farlo in questo modo è che non inquiniamo l'ambito 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; stai introducendo ulteriore complessità al fine di affrontare un problema che in molti casi non si presenta mai. È sempre possibile estrarre una delle fasi nel proprio metodo in un secondo momento in caso si presenti l'opportunità di riutilizzare il codice.
Pensieri?
#region
tag, disattivo del tutto la piegatura del codice in Visual Studio. Non mi piace il codice che cerca di nascondermi.