
Prácticas recomendadas de formato para la programación en C# en Unity
Si bien puede que no haya una forma correcta de formatear tu código C#, acordar un estilo consistente en tu 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 las que funcionan para las necesidades de tu equipo.
Puedes encontrar un ejemplo de guía de estilo de código aquí o descargar el e-book completo, Usa una guía de estilo de C# para un código de juego limpio y escalable (edición de Unity 6).
Formateando tu código
Junto con la nomenclatura, el formato ayuda a reducir la conjetura 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.
Omitir, expandir o modificar estas reglas de ejemplo para adaptarlas a las necesidades de tu equipo.
En todos los casos, considera cómo tu equipo implementará cada regla de formato y luego haz que todos la apliquen de manera uniforme. Revisa el estilo de tu equipo para resolver cualquier discrepancia.
Considera cada una de las siguientes sugerencias de formato de código al configurar tu guía de estilo de desarrollo de Unity.
Propiedades
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 el usuario u objetos externos. El getter y el setter tienen su propio modificador de acceso, lo que permite que tu propiedad sea de lectura-escritura, solo lectura o solo escritura.
También puedes usar los accesores para validar o convertir los datos (por ejemplo, verificar que los datos se ajusten a tu formato preferido o cambiar un valor a una unidad particular).
La sintaxis para propiedades puede variar, por lo que tu guía de estilo debería definir cómo formatearlas. Usa estos consejos para mantener las propiedades consistentes en tu código.
Propiedades con cuerpo de expresión
Usa propiedades con cuerpo de expresión para propiedades de una sola línea y solo lectura (=>): Esto devuelve el campo de respaldo privado.
Propiedad autoimplementada
Todo lo demás usa el antiguo { get; set; } sintaxis: Si solo quieres exponer una propiedad pública sin especificar un campo de respaldo, usa la Propiedad Auto-Implementada. Aplica la sintaxis de expresión para los accesores de conjunto y obtención. Recuerda hacer que el setter sea privado si no quieres dar acceso de escritura. Alinea el cierre con la llave de apertura para bloques de código de varias líneas.
Serialización
La serialización de scripts es el proceso automático de transformar estructuras de datos o estados de objetos en un formato que Unity puede almacenar y reconstruir más tarde. Por razones 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 puedes 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 consulta la página de documentación para el conjunto completo de reglas de serialización.
Observa algunas pautas básicas al trabajar con campos serializados:
- Usa el [SerializeField] atributo: El atributo SerializeField puede trabajar con variables privadas o protegidas para hacer que aparezcan en el Inspector. Esto encapsula mejor los datos que marcar la variable pública y previene que un objeto externo sobrescriba sus valores.
- Usa el atributo Range para establecer valores mínimos y máximos: El atributo [Range(min, max)] es útil si deseas 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.
- Agrupa datos en clases o estructuras serializables para limpiar el Inspector: Define una clase o estructura pública y márcala con el atributo [Serializable]. Define variables públicas para cada tipo que desees exponer en el Inspector.
Referencia esta clase serializable desde otra clase. Las variables resultantes aparecen dentro de unidades colapsables en el Inspector.

Estilo de llaves o de sangría
Hay dos estilos de sangrado comunes en C#:
- El estilo Allman, también conocido como el estilo BSD (de BSD Unix), coloca las llaves de apertura en una nueva línea.
- El estilo K&R, o "el verdadero estilo de llaves", mantiene la llave de apertura en la misma línea que el encabezado anterior.
También hay variaciones en estos estilos de sangrado. Los ejemplos en esta guía utilizan el estilo Allman de las Directrices de Diseño del Marco de Microsoft. Independientemente de cuál elijas como equipo, asegúrate de que todos sigan el mismo estilo de sangrado y de llaves.
Decide una sangría uniforme
La sangría es típicamente de dos o cuatro espacios. Haz que todos en tu equipo estén de acuerdo en una configuración en tus preferencias del Editor sin encender una guerra de llamas entre tabs y espacios. Ten en cuenta que Visual Studio ofrece la opción de convertir tabs en espacios.
En Visual Studio (Windows), navega a Herramientas > Opciones > Editor de Texto > C# > Tabs.
En Visual Studio para Mac, navega a Preferencias > Código Fuente > Código Fuente de C#. Selecciona el Estilo de Texto para ajustar la configuración.

No omitas llaves
No omitas las llaves, ni siquiera para declaraciones de una sola línea. Las llaves aumentan la consistencia, lo que hace que tu código sea más fácil de leer y mantener. En este ejemplo, las llaves separan claramente la acción, DoSomething, del bucle.
Si más tarde necesitas agregar una línea de Depuración o ejecutar DoSomethingElse, las llaves ya estarán en su lugar. Mantener la cláusula en una línea separada te permite agregar un punto de interrupción fácilmente.
Mantén las llaves para mayor claridad en declaraciones multilínea
No quites las llaves de las declaraciones multilineales anidadas. Eliminar llaves en este caso no generará un error, pero probablemente causará confusión. Aplica llaves por claridad, incluso si son opcionales. Las llaves también aseguran que las modificaciones, como agregar nueva lógica, se puedan hacer de manera segura sin necesidad de refactorizar la estructura circundante.
Estandariza las declaraciones switch
El formato puede variar, así que documenta las preferencias de tu equipo en tu guía de estilo y estandariza tus declaraciones de switch en consecuencia.
Aquí hay un ejemplo donde indentas las declaraciones de caso. Generalmente se recomienda incluir un caso por defecto también. Incluso si el caso por defecto no es necesario (por ejemplo, en casos donde todas las posibilidades están cubiertas), incluir uno asegura que el código esté preparado para manejar valores inesperados.
Espaciado horizontal
Algo tan simple como el espaciado puede mejorar la apariencia de tu código en pantalla. Tus preferencias de formato personales pueden variar, pero prueba las siguientes sugerencias para mejorar la legibilidad.
Agregar espacios
Agrega espacios para disminuir la densidad del código.El espacio en blanco adicional puede dar una sensación de separación visual entre partes de una línea, mejorando la legibilidad.
Espaciado después de una coma
Use un solo espacio después de una coma entre los argumentos de la función.
Sin espaciado después de paréntesis
No agregue un espacio después del paréntesis y los argumentos de la función.
Sin espacio entre una función y paréntesis
No use espacios entre el nombre de la función y el paréntesis.
Evita espacios dentro de corchetes
En la medida de lo posible, evite espacios dentro de los corchetes.
Espaciado antes de las condiciones de control de flujo
Use un solo espacio antes de las condiciones de control de flujo y agregue un espacio entre el operador de comparación de flujo y los paréntesis.
Espaciado con operadores de comparación
Use un solo espacio antes y después de los operadores de comparación.
Consejos de legibilidad
Mantén las líneas cortas. Considera el espacio en blanco horizontal: Decide un ancho de línea estándar (80-120 caracteres). Divide una línea larga en declaraciones más pequeñas en lugar de dejar que se desborde.
Mantén la indentación/jerarquía: Indenta tu código para aumentar la legibilidad.
No uses alineación de columnas a menos que sea necesario para la legibilidad: Este tipo de espaciado alinea las variables, pero puede dificultar emparejar el tipo con el nombre.
La alineación de columnas, sin embargo, puede ser útil para expresiones a nivel de bits o estructuras con muchos datos. Solo ten en cuenta que puede crear más trabajo para ti mantener la alineación de columnas a medida que agregas más elementos. Algunos autoformateadores también pueden cambiar qué parte de la columna se alinea.
Espaciado vertical y regiones
También puedes usar el espaciado vertical a tu favor. Mantén las partes relacionadas del script juntas y utiliza los espacios en blanco a tu favor. Prueba estas sugerencias para organizar tu código de arriba hacia abajo:
- Agrupa métodos dependientes y/o similares juntos: El código necesita ser lógico y coherente. Mantén los métodos que hacen lo mismo uno al lado del otro, para que alguien que lea tu lógica no tenga que saltar por el archivo.
- Usa el espacio en blanco vertical a tu favor para separar partes distintas de tu clase: Por ejemplo, puedes agregar dos líneas en blanco entre:
- Declaraciones de variables y métodos
- Clases e Interfaces
- bloques if-then-else (si ayuda a la legibilidad)
Mantén esto al mínimo y anota en tu guía de estilo donde sea aplicable.
Usando regiones en tu código
La directiva #region te permite colapsar y ocultar secciones de código en archivos C#, haciendo que archivos grandes sean más manejables y fáciles de leer.
Sin embargo, si sigues el consejo general para Clases de esta guía, el tamaño de tu clase debería ser manejable y la directiva #region superflua. Divide tu código en clases más pequeñas en lugar de ocultar bloques de código detrás de regiones. Tendrás menos inclinación a agregar una región si el archivo fuente es corto.
Nota: Muchos desarrolladores consideran que las regiones son olores de código o anti-patrones. Decidan como equipo de qué lado del debate se encuentran.
Formato de código en Visual Studio
No se desespere si estas reglas de formato parecen abrumadoras. Los IDE modernos hacen que sea eficiente configurarlas y hacerlas cumplir. Puede crear una plantilla de reglas de formato y luego convertir sus archivos de proyecto a la vez.
Para establecer reglas de formato para el editor de scripts:
- En Visual Studio(Windows), navega a Herramientas > Opciones. Localiza Editor de Texto > C# > Estilo de Código Formato. Usa la configuración para modificar las opciones de General, Sangría, Nuevas Líneas, Espaciado y Ajuste.
- En Visual Studio para Mac, selecciona Visual Studio > Preferencias, luego navega a Código Fuente > Formato de Código > código fuente de C#. Selecciona la Política en la parte superior. Luego establece tu espaciado y sangría en la pestaña Estilo de Texto. En la pestaña Formato C# , ajusta la Sangría, Nuevas Líneas, Espaciado y configuraciones de Ajuste.
Si en algún momento deseas forzar que tu archivo de script se ajuste a la guía de estilo:
- En Visual Studio (Windows), ve a Editar > Avanzado > Formatear Documento (Ctrl + K, Ctrl + D combinación de teclas). Si solo deseas formatear espacios en blanco y alineación de tabulaciones, también puedes usar Ejecutar Limpieza de Código (Ctrl + K , Ctrl + E) en la parte inferior del editor.
- En Visual Studio para Mac, ve a Editar > Formatear Documento (Ctrl + I tecla de acceso rápido)
En Windows, también puedes compartir la configuración de tu editor desde Herramientas > Importar y Exportar Configuraciones. 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 facilita seguir la guía de estilo. El formateo se vuelve tan simple como usar una combinación de teclas.
Nota: Puedes configurar un archivo EditorConfig en lugar de importar y exportar configuraciones de Visual Studio. Hacer esto te permite compartir el formato más fácilmente entre diferentes IDEs, y tiene el beneficio adicional de funcionar con el control de versiones. Consulta las opciones de reglas de estilo de código .NET para más información.
Aunque esto no es específico para código limpio, asegúrate de revisar 10 maneras de acelerar tu flujo de trabajo de programación en Unity con Visual Studio. El código limpio es mucho más fácil de formatear y refactorizar si aplicas estos consejos de productividad.

Configura un archivo .editorconfig
Para configurar un archivo .editorconfig en Visual Studio Code, sigue estos pasos:
- En el directorio raíz de tu proyecto, crea un nuevo archivo llamado .editorconfig.
- Abre el archivo .editorconfig y agrega la configuración deseada.
Aquí hay un ejemplo de configuración para C#:
# archivo EditorConfig más alto
root = true
# finales de línea estilo Unix con un salto de línea al final de cada archivo
[*]
end_of_line = lf
insert_final_newline = true
# indentación de 4 espacios
[*.cs]
estilo_de_indentación = espacio
tamaño_de_indentación = 4
charset = utf-8
trim_trailing_whitespace = true
# Indentación con tabulaciones para Makefiles
[Makefile]
indent_style = tab
# Configuraciones específicas para archivos JSON
[*.json]
estilo_de_indentación = espacio
tamaño_de_indentación = 2
Obtenga más consejos sobre estilo de código
Aprende más sobre convenciones de nomenclatura aquí o consulta el libro electrónico completo. También puedes explorar nuestro ejemplo de guía de estilo de código detallada.