Escuché mucho sobre cómo mantener cortos los métodos y escuché a muchos programadores decir que usar etiquetas #region dentro de un método es una señal segura de que es demasiado largo y debe ser refactorizado en múltiples métodos. Sin embargo, me parece que hay muchos casos en los que separar el código con etiquetas #region dentro de un método es la solución superior para refactorizar en múltiples métodos.
Supongamos que tenemos un método cuyo cálculo se puede separar en tres fases bastante distintas. Además, cada una de estas etapas solo es relevante para el cálculo de este método, por lo que extraerlas en nuevos métodos no nos permite reutilizar el código. ¿Cuáles son, entonces, los beneficios de extraer cada fase en su propio método? Por lo que puedo decir, todo lo que ganamos es cierta legibilidad y un alcance variable separado para cada fase (lo que ayudará a evitar que las modificaciones de una fase en particular rompan accidentalmente otra fase).
Sin embargo, ambos se pueden lograr sin extraer cada fase en su propio método. Las etiquetas de región nos permiten contraer el código en un formulario que sea igual de legible (con el beneficio adicional de que ya no tenemos que dejar nuestro lugar en este archivo si decidimos expandir y examinar el código), y simplemente envolver cada fase en {}crea su propio alcance para trabajar.
El beneficio de hacerlo de esta manera es que no contaminamos el alcance del nivel de clase con tres métodos que en realidad solo son relevantes para el funcionamiento interno de un cuarto método. Refactorizar inmediatamente un método largo en una serie de métodos cortos me parece el código reutilizable equivalente a la optimización prematura; está introduciendo una complejidad adicional para abordar un problema que en muchos casos nunca surge. Siempre puede extraer una de las fases en su propio método más adelante si surge la oportunidad de reutilizar el código.
Pensamientos?
#regionetiquetas , sino que apago el plegado de código en Visual Studio por completo. No me gusta el código que intenta esconderse de mí.