
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. Una guía de estilo bien organizada puede ayudarte a controlar las discrepancias para producir un producto final cohesivo.
Los nombres de tus variables, clases y métodos no son meras etiquetas. Tienen peso y significado. Un buen estilo de nomenclatura impacta en cómo alguien que lee tu programa puede comprender la idea que intentas transmitir.
Esta página proporciona consejos y consideraciones clave a tener en cuenta para las convenciones de nomenclatura y el formateo de código 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 mejor se adaptan a las necesidades de tu equipo.
Puedes encontrar un ejemplo de guía de estilo de código aquí o descargar el libro electrónico completo, Usa una guía de estilo de C# para un código de juego limpio y escalable (edición Unity 6).
Un identificador es cualquier nombre que asignes a un tipo (clase, interfaz, estructura, delegado o enumeración), miembro, variable o espacio de nombres.
Evita caracteres especiales (barra invertida, símbolos, caracteres Unicode) en tus identificadores, aunque C# los permite. Estos pueden interferir con ciertas herramientas de línea de comandos de Unity. Evita caracteres inusuales para asegurar la compatibilidad con la mayoría de las plataformas.
No puedes definir variables con espacios en el nombre porque C# utiliza el carácter de espacio para separar identificadores. Los esquemas de mayúsculas pueden aliviar el problema de tener que usar nombres compuestos o frases en el código fuente.
A continuación se enumeran varias convenciones de nomenclatura y mayúsculas bien conocidas:
Camel case (camelCase)
También conocido como camel caps, camel case es la práctica de escribir frases sin espacios ni puntuación, separando las palabras con una sola letra mayúscula. La primera letra es minúscula. Las variables locales y los parámetros de método son camel case. Por ejemplo:
examplePlayerController
puntosDeSaludMax
endOfFile
Pascal case (PascalCase)
El case Pascal es una variación del case de camello, donde la letra inicial está en mayúscula. Usa esto para nombres de clases, campos públicos y métodos en el desarrollo de Unity. Por ejemplo:
ControladorDeJugadorEjemplo
PuntosDeSaludMax
EndOfFile
Snake case (snake_case)
En este caso, los espacios entre palabras se reemplazan con un carácter de guion bajo. Por ejemplo:
example_player_controller
max_health_points
end_of_file
Kebab case (kebab-case)
Aquí, los espacios entre palabras se reemplazan con guiones. Las palabras aparecen en un "escarbadiente" de caracteres de guion. Por ejemplo:
example-player-controller
Max-health-points
end-of-file
metodología-de-convenciones-de-nomenclatura
El Kebab-case se utiliza ampliamente en tecnologías web y, en particular, para CSS. También lo recomendamos para su uso con UI Toolkit USS.
Hungarian notation
El nombre de la variable o función a menudo indica su intención o tipo. Por ejemplo:
int iCounter
string strPlayerName
La notación húngara es una convención más antigua y no es común en el desarrollo de Unity.
Considera estas reglas para tus variables y campos:

Los enums son tipos de valor especiales definidos por un conjunto de constantes nombradas. Por defecto, las constantes son enteros, contando desde cero.
Usa la notación Pascal para nombres y valores de enum. Puedes colocar enums públicos fuera de una clase para hacerlos globales. Usa un sustantivo singular para el nombre del enum ya que representa un solo valor de un conjunto de valores posibles. No deben tener prefijo ni sufijo.
Nota: Los enums de bits marcados con el System.FlagsAttribute atributo son la excepción a esta regla. Normalmente los pluralizas ya que representan más de un tipo.
Sigue estas reglas estándar al nombrar tus clases e interfaces:
En C#, cada instrucción ejecutada se realiza en el contexto de un método.
Nota: "función" y "método" a menudo se utilizan indistintamente en el desarrollo de Unity. Sin embargo, dado que no puedes escribir una función sin incorporarla en una clase en C#, "método" es el término aceptado.
Los métodos realizan acciones, así que aplica estas reglas para nombrarlos adecuadamente:
Los eventos en C# implementan el patrón observador. Este patrón de diseño de software define una relación en la que un objeto, el sujeto (o publicador), puede notificar a una lista de objetos dependientes llamados observadores(o suscriptores). Así, el sujeto puede transmitir cambios de estado a sus observadores sin acoplar fuertemente los objetos involucrados. Puedes aprender más sobre el uso del observador y otros patrones de diseño en tus proyectos de Unity en el libro electrónico Mejora tu código con patrones de diseño y SOLID.
Nombra el evento con una frase verbal. Elige un nombre que comunique el cambio de estado con precisión. Usa el presente o el participio pasado para indicar eventos "antes" o "después". Por ejemplo, especifica "AbrirPuerta" para un evento antes de abrir una puerta o "PuertaAbierta" para un evento después.
En la mayoría de los casos, el Action delegado puede manejar los eventos necesarios para el juego. Puedes pasar de 0 a 16 parámetros de entrada de diferentes tipos con un tipo de retorno void. Usar el delegado predefinido ahorra código.
Nota: También puedes usar los delegados EventHandler o EventHandler. Acuerda como equipo cómo todos implementarán los eventos.
El sujeto que invoca el evento típicamente lo hace desde un método prefijado con "On", p.ej. "OnAbrirPuerta" o "OnPuertaAbierta."
Si el sujeto se llama “EventosJuego,” tus observadores pueden tener un método llamado “EventosJuego_AperturaPuerta” o “EventosJuego_PuertaAbierta.” Tenga en cuenta que esto se llama el "método de manejo de eventos", no debe confundirse con el delegado EventHandler.
Cree EventArgs personalizados solo cuando sea necesario. Si necesita pasar datos personalizados a su Evento, cree un nuevo tipo de EventArgs, ya sea heredado de System.EventArgso de una estructura personalizada.
Utilice namespaces para asegurarse de que sus clases, interfaces, enumeraciones, etc. no entren en conflicto con las existentes de otros espacios de nombres o el espacio de nombres global. Los espacios de nombres también pueden prevenir conflictos con activos de terceros de la Asset Store.
Al aplicar namespaces:
En el código, estas clases se refieren como Enemy.Controller1 y Enemy.Controller2, respectivamente. Agregue una línea using para ahorrar escribir el prefijo:
using Enemy;
Cuando el compilador encuentra los nombres de clase Controller1 y Controller2, entiende que te refieres a Enemy.Controller1 y Enemy.Controller2.
Si el script necesita referirse a clases con el mismo nombre de diferentes namespaces, utiliza el prefijo para diferenciarlas. Por ejemplo, si tiene una clase Controller1 y Controller2 en el espacio de nombres Player, puede escribir Player.Controller1 y Player.Controller2 para evitar conflictos. De lo contrario, el compilador informará un error.
using Enemy;
Aprenda más sobre el formato general aquí o consulte el libro electrónico completo. También puede explorar nuestro ejemplo de guía de estilo de código.