Usar TAB para la indentación. No usar la barra espaciadora.
El contenido dentro de un bloque debe estar espaciado en un TAB respecto de las llaves que lo contienen.
Los comentarios deben estar en el mismo nivel que el código.
Las llaves deben abrirse siempre al comienzo de la línea siguiente que de la que abrió el bloque. No en la misma línea.
Usar un espacio en blanco entre cada operador y el paréntesis.
Usar una línea en blanco para separar grupos lógicos de código
Todas las expresiones de control (if, while, for, swich, etc) deben utilizar llaves.
Las clases no deben tener miembros publicos. Para tener una funcionalidad de este tipo usamos propiedades.
No usar var para declarar variables.
Excepciones:
Las expresiones de una línea pueden abrir y cerrar las llaves en la misma línea.
Si una expresión de control posee una sola línea pueden obviarse las llaves.
Pascal Casing: La primer letra de cada palabra debe estar en mayúscula, las demás en minúscula. Ej. “ShowReport”
Camel Casing: La primera letra de cada palabra debe estar en mayúscula, excepto la primera (en minúscula) y las demás en minúscula. Ej. “fullMessage”
Usar Pascal Casing para nombres de clases y métodos
Usar Pascal Casing para los nombres de los archivos.
Usar Camel Casing para nombres de miembros y parámetros de los métodos.
Usar “underscore” delante y Camel Casing para miembros privadas.
Namespaces: usar “Pascal Casing”, con el siguiente criterio: [company name].[product name].[top level module].[bottom level module]
Constants: Usar todas las letras mayúsculas para la declaración de constantes, separando las palabras con un “_”:
private const System.DayOfWeek DIA_DE_LA_SEMANA = System.DayOfWeek.Friday;
Ejemplos de declaración de propiedades:
/* A la manera clásica
public string _name;
public string Name { get {return _name;} set{_name = value; }
*/
/* Formas abreviadas (queda el código mucho mas claro)*/
public string Name { get; } //Solo de lectura
public string Name { get; set; }
public string Name { get; private set; }
Uso del operador ternario:
string result = (var1 == va2)?string.Empty:"Hello"; //Usar parentesis en la evaluación
Declaración de variables:
Una línea para cada variable.
No usar “hungarian casing” que consiste en prefijos en minúsculas que se añaden a los nombres de los miembros, y que indican su tipo. El resto del nombre indica, lo más claramente posible, la función que realiza la miembro. Ej. bExist, nCount, etc.
No usar prefijos en los nombres de los miembros.
No usar abreviaciones en los nombres de miembros, clases y métodos. Usar nombres significativos y completos.
Excepciones:
En caso de ser miembros privados, utilizar como prefijo el caracter guión bajo: "_".