Si bien es posible que no exista una forma correcta de formatear su código C#, acordar un estilo consistente en todo su equipo puede resultar en una base de código más limpia, legible y escalable. Esta página ofrece consejos y consideraciones clave a tener en cuenta para tus clases, métodos y comentarios al crear tu propia guía de estilo.
Nota: Las recomendaciones compartidas aquí se basan en las proporcionadas por Microsoft. Las mejores reglas de guía de estilo de código son aquellas que se adaptan a las necesidades de su equipo.
Puede encontrar un ejemplo de guía de estilo de código aquí o descargar el libro electrónico completo. Cree una guía de estilo de C#: Escriba código más limpio y escalable.
Además de los nombres, el formato ayuda a reducir las conjeturas y mejora la claridad del código. Al seguir una guía de estilo estandarizada, las revisiones de código se centran menos en cómo se ve el código y más en lo que hace.
Intente personalizar la forma en que su equipo formateará el código. Considere cada una de las siguientes sugerencias de formato de código al configurar su guía de estilo de Unity. Puede optar por omitir, ampliar o modificar estas reglas de ejemplo para adaptarlas a las necesidades de su equipo.
En todos los casos, reflexione sobre cómo su equipo implementará cada regla de formato y luego haga que todos la apliquen de manera uniforme. Vuelve a consultar la guía de estilo de tu equipo para resolver cualquier discrepancia. Cuanto menos piense en el formato, más productiva y creativamente podrá trabajar.
Echemos un vistazo a algunas pautas de formato.
Una propiedad proporciona un mecanismo flexible para leer, escribir o calcular valores de clase. Las propiedades se comportan como si fueran variables miembro públicas, pero en realidad son métodos especiales llamados accesores.
Cada propiedad tiene un método get y set para acceder a un campo privado, llamado campo de respaldo. De esta manera, la propiedad encapsula los datos, ocultándolos de cambios no deseados por parte del usuario u objetos externos. El "getter" y el "setter" tienen cada uno su propio modificador de acceso, lo que permite que su propiedad sea de lectura-escritura, de solo lecturao de solo escritura.
También puede utilizar los descriptores de acceso para validar o convertir los datos (por ejemplo, para verificar que los datos se ajustan a su formato preferido o cambian un valor a una unidad particular).
La sintaxis de las propiedades puede variar, por lo que su guía de estilo debe definir cómo formatearlas. Consulte los siguientes ejemplos para obtener sugerencias sobre cómo mantener las propiedades coherentes en su código.
Utilice propiedades con cuerpo de expresión para propiedades de solo lectura de una sola línea (=>): Esto devuelve el campo de respaldo privado.
Todo lo demás usa la expresión con cuerpo { get; colocar; } sintaxis: Si solo desea exponer una propiedad pública sin especificar un campo de respaldo, use la propiedad implementada automáticamente.
Aplique la sintaxis con cuerpo de expresión para el conjunto y obtenga descriptores de acceso. Recuerde hacer que el "configurador" sea privado si no desea proporcionar acceso de escritura. Alinee el cierre con la llave de apertura para bloques de código multilínea.
La serialización de scripts es el proceso automático de transformar estructuras de datos o estados de objetos en un formato que Unity pueda almacenar y reconstruir más adelante. Por motivos de rendimiento, Unity maneja la serialización de manera diferente que en otros entornos de programación.
Los campos serializados aparecen en el Inspector, pero no se pueden serializar campos estáticos, constantes o de solo lectura. Deben ser públicos o estar etiquetados con el atributo [SerializeField] . Unity solo serializa ciertos tipos de campos, así que consulte la documentación para conocer el conjunto completo de reglas de serialización.
Observe estas pautas básicas cuando trabaje con campos serializados:
Utilice el atributo [SerializeField]: El atributoSerializeFieldpuede funcionar con variables privadas o protegidas para que aparezcan en el Inspector. Esto encapsula los datos mejor que marcar la variable como pública y evita que un objeto externo sobrescriba sus valores.
Utilice el atributo Rango para establecer valores mínimos y máximos: El atributo[Rango(min, max)]es útil si desea limitar lo que el usuario puede asignar a un campo numérico. También representa convenientemente el campo como un control deslizante en el Inspector.
Agrupe datos en clases o estructuras serializables para limpiar el Inspector: Defina una clase o estructura pública y márquela con el atributo[Serializable]. Defina variables públicas para cada tipo que desee exponer en el Inspector.
Haga referencia a esta clase serializable desde otra clase. Las variables resultantes aparecen dentro de unidades plegables en el Inspector.
Hay dos estilos de sangría comunes en C#:
Elestilo Allman, también conocido como estilo BSD (de BSD Unix), coloca las llaves de apertura en una nueva línea.
Elestilo K&R, o "estilo de una llave verdadera", mantiene la llave de apertura en la misma línea que el encabezado anterior.
También existen variaciones en estos estilos de sangría . Los ejemplos de esta guía utilizan el estilo Allman de las pautas de diseño del marco de Microsoft. Independientemente de cuál elijas como equipo, asegúrate de que todos sigan el mismo estilo de sangría y tirantes. También puede probar los consejos de las siguientes secciones.
La sangría suele ser de dos o cuatro espacios. Haga que todos los miembros de su equipo se pongan de acuerdo sobre una configuración en las preferencias de su Editor sin iniciar una guerra de pestañas contra espacios.
En Visual Studio para Windows, navegue hasta Herramientas > Opciones > Editor de texto > C# > Pestañas.
En Visual Studio para Mac, navegue hasta Preferencias > Código fuente > Código fuente C#. Seleccione el estilo de texto para ajustar la configuración.
Nota: Visual Studio ofrece la opción de convertir pestañas en espacios.
No omita las llaves, ni siquiera en declaraciones de una sola línea. Las llaves aumentan la coherencia, lo que hace que el código sea más fácil de leer y mantener. En este ejemplo, las llaves separan claramente la acción Hacer algo del bucle.
Si necesita agregar una línea de depuración o ejecutar DoSomethingElse más adelante, las llaves ya estarán en su lugar. Mantener la cláusula en una línea separada le permite simplemente agregar un punto de interrupción.
No elimine las llaves de las declaraciones multilínea anidadas. Quitar las llaves en este caso no generará un error, pero probablemente causará confusión. Aplique llaves para mayor claridad, incluso si son opcionales.
El formato puede variar, así que documente las preferencias de su equipo en su guía de estilo y estandarice sus declaraciones de cambio en consecuencia.
A continuación se muestra un ejemplo de sangría de las declaraciones de caso.
Algo tan simple como el espaciado puede mejorar la apariencia de su código en pantalla. Si bien las preferencias personales de formato pueden variar, considere las sugerencias a continuación para mejorar la legibilidad.
Agregue espacios para disminuir la densidad del código. El espacio en blanco adicional da la sensación de separación visual entre partes de una línea.
Utilice un solo espacio después de una coma entre los argumentos de la función.
No agregue un espacio después del paréntesis y los argumentos de la función.
No utilice espacios entre el nombre de una función y los paréntesis.
En la medida de lo posible, evite los espacios entre paréntesis.
Utilice un espacio único antes de las condiciones de control de flujo y agregue un espacio entre el operador de comparación de flujo y los paréntesis.
Utilice operadores de comparación de un solo espacio antes y después.
Mantenga las líneas cortas y considere los espacios en blanco horizontales. Decida un ancho de línea estándar (80 a 120 caracteres) y divida una línea larga en declaraciones más pequeñas en lugar de dejar que se desborde.
Como se mencionó anteriormente, intente mantener la sangría/jerarquía. Sangrar su código puede aumentar la legibilidad.
No utilice la alineación de columnas a menos que sea necesaria para facilitar la lectura. Si bien este tipo de espaciado alinea las variables, puede complicar el emparejamiento del tipo con el nombre.
Sin embargo, la alineación de columnas puede resultar útil para expresiones bit a bit o estructuras con muchos datos. Solo tenga en cuenta que podría generarle más trabajo mantener la alineación de las columnas a medida que agrega más elementos. Algunos formateadores automáticos también pueden cambiar qué parte de la columna se alinea.
También puedes utilizar el espaciado vertical a tu favor. Mantenga juntas las partes relacionadas del guión y utilice líneas en blanco a su favor. Pruebe lo siguiente para organizar su código de arriba a abajo:
- Agrupe métodos dependientes o similares juntos: El código debe ser lógico y coherente. Mantenga los métodos que hacen lo mismo uno al lado del otro, para que alguien que lea su lógica no tenga que saltar por el archivo.
- Utilice el espacio en blanco vertical para separar distintas partes de su clase: Por ejemplo, puedes agregar dos líneas en blanco entre:
- Declaraciones y métodos de variables
- Clases e interfaces
- bloques if-then-else (si ayudan a la legibilidad)
Mantén esto al mínimo y, si es posible, anótalo en tu guía de estilo.
Usando regiones en su código
La directiva #region le permite contraer y ocultar secciones de código en archivos C#, lo que hace que los archivos grandes sean más manejables y fáciles de leer.
Sin embargo, si sigues los consejos generales para las clases de esta guía, el tamaño de tu clase debería ser manejable y la directiva #region superflua. Divida su código en clases más pequeñas en lugar de ocultar bloques de código detrás de regiones. Estará menos inclinado a agregar una región si el archivo fuente es corto.
Nota: Muchos desarrolladores consideran que las regiones son olores de código o antipatrones. Decidan en equipo de qué lado del debate se encuentran.
No se desespere si estas reglas de formato le parecen abrumadoras. Los IDE modernos hacen que sea eficiente configurarlos y aplicarlos. Puede crear una plantilla de reglas de formato y luego convertir los archivos de su proyecto de inmediato.
Para configurar reglas de formato para el editor de secuencias de comandos:
- En Visual Studio para Windows, navegue hasta Herramientas > Opcionesy luego busque Editor de texto > C# > Formato de estilo de código.
- Utilice la configuración para modificar las opciones General, Sangría, Nuevas líneas, Espaciado y Ajuste .
- En Visual Studio para Mac, seleccione Visual Studio > Preferenciasy luego navegue hasta Código fuente > Formato de código > Código fuente C#.
- Seleccione la Política en la parte superior, luego vaya a la pestaña Estilo de texto . En la pestaña Formato C# , ajuste las configuraciones de Sangría, Nuevas líneas, Espaciado y Ajuste.
Para forzar que su archivo de script se ajuste a la guía de estilo:
- En Visual Studio para Windows, vaya aEdición > Avanzado > Formatear documento (Ctrl + K, Ctrl + D combinación de teclas de acceso rápido). Si solo desea formatear espacios en blanco y alineación de pestañas, también puede usar Ejecutar limpieza de código (Ctrl + K, Ctrl + E) en la parte inferior del Editor.
- En Visual Studio para Mac, vaya a Editar > Formatear documento (tecla de acceso rápido Ctrl + I ).
En Windows, también puede compartir la configuración de su Editor desde Herramientas > Configuración de importación y exportación. Exporte un archivo con el formato de código C# de la guía de estilo y luego haga que cada miembro del equipo importe ese archivo.
Visual Studio le ayuda a cumplir con la guía de estilo. Entonces, formatear se vuelve tan simple como usar una tecla de acceso rápido.
Nota: Puede configurar un archivoEditorConfig (ver arriba) en lugar de importar y exportar la configuración de Visual Studio. Hacer esto facilita compartir formato entre diferentes IDE. También tiene el beneficio adicional de trabajar con control de versiones. Consulte las opciones de reglas de estilo de código .NET para obtener más información.
Aunque esto no es específico para limpiar código, asegúrese de consultar las 10 formas de acelerar su flujo de trabajo de programación en Unity con Visual Studio. Recuerda que es más conveniente formatear y refactorizar código limpio si aplicas estos consejos de productividad.
Obtenga más consejos de estilo de código
Obtenga más información sobre las convenciones de nomenclatura aquí o consulte el libro electrónico completo. También puede explorar nuestro ejemplo detallado de guía de estilo de código.