Eu ouço muito sobre manter métodos curtos e muitos programadores dizem que o uso de tags #region dentro de um método é um sinal claro de que é muito longo e deve ser refatorado em vários métodos. No entanto, parece-me que há muitos casos em que a separação de código com tags #region dentro de um método é a solução superior à refatoração em vários métodos.
Suponha que tenhamos um método cuja computação possa ser separada em três fases bastante distintas. Além disso, cada um desses estágios é relevante apenas para o cálculo desse método e, portanto, extraí-los em novos métodos não nos permite reutilizar o código. Quais são os benefícios de extrair cada fase em seu próprio método? Pelo que sei, tudo o que ganhamos é alguma legibilidade e um escopo variável separado para cada fase (o que ajudará a impedir que as modificações de uma determinada fase quebrem acidentalmente outra fase).
No entanto, ambos podem ser alcançados sem extrair cada fase em seu próprio método. As tags de região nos permitem recolher o código em um formulário que seja legível (com o benefício adicional de que não precisamos mais deixar nosso lugar neste arquivo, se decidirmos expandir e examinar o código) e simplesmente agrupar cada fase {}
cria seu próprio escopo para trabalhar.
O benefício de fazer dessa maneira é que não poluimos o escopo no nível de classe com três métodos que são realmente relevantes apenas para o funcionamento interno de um quarto método. Refatorar imediatamente um método longo em uma série de métodos curtos me parece ser a reutilização de código equivalente à otimização prematura; você está introduzindo complexidade extra para resolver um problema que, em muitos casos, nunca surge. Você sempre pode extrair uma das fases em seu próprio método posteriormente, se surgir a oportunidade de reutilização de código.
Pensamentos?
#region
tags, desativo completamente a dobragem de código no Visual Studio. Eu não gosto de código que tenta se esconder de mim.