Pregunta

Para aquellos de ustedes en el entorno de Visual Studio, ¿qué les parece empaquetar su código en #regions?(o si algún otro IDE tiene algo similar...)

¿Fue útil?

Solución

9 de cada 10 veces, el plegado de código significa que no has podido utilizar el Principio de SoC Por lo que vale.
Más o menos siento lo mismo con las clases parciales.Si tiene un fragmento de código que cree que es demasiado grande, debe dividirlo en partes manejables (y reutilizables), no ocultarlo ni dividirlo.
Te morderá la próxima vez que alguien necesite cambiarlo y no podrá ver la lógica escondida en un método monstruoso de 250 líneas.

Siempre que pueda, extraiga algo de código de la clase principal y colóquelo en una clase auxiliar o de fábrica.

foreach (var item in Items)
{
    //.. 100 lines of validation and data logic..
}

no es tan legible como

foreach (var item in Items)
{
    if (ValidatorClass.Validate(item))
        RepositoryClass.Update(item);
}



Mis $0,02 de todos modos.

Otros consejos

De esto se habló en Codificación de terror.

Mi creencia personal es que son útiles, pero todo en exceso puede ser demasiado.

Lo uso para ordenar mis bloques de código en:
Enumeraciones
Declaraciones
Constructores
Métodos
Controladores de eventos
Propiedades

A veces, es posible que te encuentres trabajando en un equipo en el que se alientan o exigen las #regiones.Si eres como yo y no soportas jugar con código plegado, puedes desactivar el esquema para C#:

  1. Opciones -> Editor de texto -> C# -> Pestaña Avanzado
  2. Desmarque "Ingresar al modo de esquematización cuando se abran archivos"

Utilizo #Región para ocultar el código generado automáticamente feo e inútil, que realmente pertenece a la parte generada automáticamente de la clase parcial.Pero, cuando se trabaja con proyectos antiguos o proyectos actualizados, no siempre se puede dar ese lujo.

En cuanto a otros tipos de plegado, doblo Funciones todo el tiempo.Si nombras bien la función, nunca tendrás que mirar dentro a menos que estés probando algo o (re)escribiéndolo.

Si bien entiendo el problema de que Jeff, et.Alabama.tengo con las regiones, lo que yo no entender es por qué golpear CONTROL+METRO,CONTROL+l expandir todas las regiones en un archivo es muy difícil de manejar.

yo suelo compañero de texto (Solo Mac) que tiene plegado de código y lo encuentro realmente útil para funciones de plegado. Sé lo que hace mi función "getGet", no necesito que ocupe 10 líneas de tan valioso espacio en la pantalla.

Nunca lo uso para ocultar un bucle for, una declaración if o similar, a menos que le muestre el código a otra persona, donde ocultaré el código que han visto para evitar mostrar el mismo código dos veces.

Prefiero clases parciales a regiones.

El uso extensivo de regiones por parte de otros también me da la impresión de que alguien, en algún lugar, está violando el principio de responsabilidad única y está tratando de hacer demasiadas cosas con un solo objetivo.

@Tomás

Se proporcionan clases parciales para que pueda separar el código generado automáticamente por la herramienta de cualquier personalización que pueda necesitar realizar después de que la generación de código haya hecho su parte.Esto significa que su código permanece intacto después de volver a ejecutar Codegen y no se sobrescribe.Ésto es una cosa buena.

No soy un fanático de las clases parciales; trato de desarrollar mis clases de manera que cada clase tenga un tema único y muy claro del cual es responsable.Con ese fin, no creo que algo con una responsabilidad clara deba dividirse en varios archivos.Por eso no me gustan las clases parciales.

Dicho esto, no estoy seguro de las regiones.En su mayor parte, no los uso;sin embargo, trabajo con código todos los días que incluye regiones; algunas personas se esfuerzan mucho en ellos (plegando métodos privados en una región y luego cada método se pliega en su propia región), y otras personas los usan poco (plegando enumeraciones, plegar atributos, etc.).Mi regla general, a partir de ahora, es que sólo coloco código en regiones si (a) es probable que los datos permanezcan estáticos o no se modifiquen con mucha frecuencia (como enumeraciones), o (b) si hay métodos que se implementan por necesidad debido a la implementación de subclases o métodos abstractos, pero, nuevamente, no se tocarán muy a menudo.

Las regiones nunca deben usarse dentro de métodos.Se pueden utilizar para agrupar métodos, pero esto debe manejarse con extrema precaución para que el lector del código no se vuelva loco.No tiene sentido plegar métodos por sus modificadores.Pero a veces doblar puede aumentar la legibilidad.Por ej.Puede resultar útil agrupar algunos métodos que utiliza para solucionar algunos problemas cuando utiliza una biblioteca externa y que no desea visitar con demasiada frecuencia.Pero el codificador siempre debe buscar soluciones como empaquetar la biblioteca con las clases apropiadas en este ejemplo en particular.Cuando todo lo demás falla, utilice el plegado para mejorar la legibilidad.

Esta es sólo una de esas discusiones tontas que no llevan a ninguna parte.Si te gustan las regiones, úsalas.Si no lo hace, configure su editor para desactivarlos.Allí todos están felices.

El plegado de regiones estaría bien si no tuviera que mantener manualmente las agrupaciones de regiones basadas en características de mi código que son intrínsecas al lenguaje.Por ejemplo, el compilador ya sabe que es un constructor.El modelo de código del IDE ya sabe que es un constructor.Pero si quiero ver una vista del código donde los constructores están agrupados, por alguna razón tengo que reafirmar el hecho de que estas cosas son constructores, colocándolos físicamente juntos y luego formando un grupo a su alrededor.Lo mismo ocurre con cualquier otra forma de dividir una clase/estructura/interfaz.¿Qué pasa si cambio de opinión y quiero ver el material público/protegido/privado primero separado en grupos y luego agrupado por tipo de miembro?

Usar regiones para marcar propiedades públicas (por ejemplo) es tan malo como ingresar un comentario redundante que no agrega nada a lo que ya se puede discernir en el código mismo.

De todos modos, para evitar tener que usar regiones para ese propósito, escribí un complemento IDE gratuito y de código abierto para Visual Studio 2008 llamado Ora.Proporciona una vista agrupada automáticamente, lo que hace que sea mucho menos necesario mantener la agrupación física o utilizar regiones. Lo podrías encontrar útil.

Generalmente encuentro que cuando trato con código como Eventos en C#, donde hay alrededor de 10 líneas de código que en realidad son solo parte de una declaración de evento (la clase EventArgs, la declaración de delegado y la declaración de evento), colocar una región alrededor de ellas y luego desplegarlas. del camino lo hace un poco más legible.

Creo que es una herramienta útil cuando se usa correctamente.En muchos casos, siento que los métodos, las enumeraciones y otras cosas que a menudo se doblan deberían ser pequeñas cajas negras.A menos que debas mirarlos por algún motivo, su contenido no importa y debe estar lo más oculto posible.Sin embargo, nunca incluyo métodos privados, comentarios o clases internas.Los métodos y enumeraciones son realmente las únicas cosas que doblo.

Mi enfoque es similar a algunos otros aquí, usando regiones para organizar bloques de código en constructores, propiedades, eventos, etc.

Hay un excelente conjunto de macros VS.NET de Roland Weigelt disponible en la entrada de su blog, Mejor soporte de teclado para #región...#regiónfinal.Los he estado usando durante años, asignando Ctrl+.para colapsar la región actual y Ctrl++ para expandirla.Descubra que funciona mucho mejor que la funcionalidad VS.NET predeterminada que pliega/despliega todo.

Yo personalmente uso #Regions todo el tiempo.Creo que me ayuda a mantener cosas como propiedades, declaraciones, etc. separadas entre sí.

¡Esta probablemente también sea una buena respuesta!

Codificación de terror

Editar:¡Maldita sea, Pat se me adelantó en esto!

Yo prefiero #regions, pero un antiguo compañero de trabajo no soportaba tener cosas escondidas.Entendí su punto una vez que trabajé en una página con 7 #regiones, al menos 3 de las cuales se habían generado automáticamente y tenían el mismo nombre, pero en general creo que son una forma útil de dividir las cosas y mantener todo menos. desordenado.

Realmente no tengo problemas con el uso de #region para organizar el código.Personalmente, normalmente configuraré diferentes regiones para cosas como propiedades, controladores de eventos y métodos públicos/privados.

Eclipse hace algo de esto en Java (o PHP con complementos) por sí solo.Le permite plegar funciones y demás.Me suele gustar.Si sé lo que hace una función y no estoy trabajando en ella, no necesito mirarla.

Emacs tiene un modo menor plegable, pero sólo lo activo ocasionalmente.Sobre todo cuando estoy trabajando en alguna monstruosidad heredada de otro físico que evidentemente tenía menos formación o se preocupaba menos por sus prácticas de codificación.

Usando regiones (o de otro modo plegando código) debería No tiene nada que ver con los olores del código (ni con ocultarlos) ni con ninguna otra idea de ocultar código que no quiera que la gente vea "fácilmente".

Las regiones y el plegado de código realmente se tratan de proporcionar una manera de agrupar fácilmente secciones de código que se pueden contraer/doblar/ocultar para minimizar la cantidad de "ruido" extraño en torno a lo que está trabajando actualmente.Si configura las cosas correctamente (es decir, nombra sus regiones con algo útil, como el nombre del método contenido), entonces puede contraer todo excepto la función que está editando actualmente y aún mantener cierto nivel de contexto sin tener que ver la otra. líneas de código.

Probablemente debería haber algunas pautas de mejores prácticas en torno a estas ideas, pero uso regiones ampliamente para proporcionar una estructura estándar a mis archivos de código (agrupo eventos, campos de toda la clase, propiedades/métodos privados, propiedades/métodos públicos).Cada método o propiedad también tiene una región, donde el nombre de la región es el nombre del método/propiedad.Si tengo un montón de métodos sobrecargados, el nombre de la región es la firma completa y luego todo el grupo se envuelve en una región que es solo el nombre de la función.

Personalmente odio las regiones.En mi opinión, el único código que debería estar en las regiones es el código generado.Cuando abro un archivo siempre comienzo con Ctrl+M+O.Esto se pliega al nivel del método.Cuando tienes regiones, no ves nada más que nombres de regiones.

Antes de registrarme, agrupo métodos/campos lógicamente para que se vea bien después de Ctrl+M+O.Si necesita regiones, tiene muchas líneas en su clase.También encuentro que esto es muy común.

región Esto parece un código bien organizado porque IUse Regiones

// basura total, no hay estructura aquí

región final

Enumeraciones

Propiedades

.ctores

Métodos

Controladores de eventos

Eso es todo para lo que uso regiones.No tenía idea de que pudieras usarlos dentro de los métodos.

Suena como una idea terrible :)

El Codificación de terror El artículo real también me hizo pensar en esto.

Generalmente, en clases grandes colocaré una región alrededor de las variables miembro, constantes y propiedades para reducir la cantidad de texto por el que tengo que desplazarme y dejar todo lo demás fuera de una región.En los formularios, generalmente agrupo las cosas en "variables miembro, constantes y propiedades", funciones de formulario y controladores de eventos.Una vez más, esto es más para no tener que desplazarme por mucho texto cuando solo quiero revisar algunos controladores de eventos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top