La convenciones en programación ayudan a entender mejor el código y lo hacen mas mantenible a través del tiempo. En esta guía se dan un conjunto de recomendaciones para principiantes en el lenguaje C# sobre como nombrar sus diferentes tipos, variables, propiedades y campos en C#. Si tienes una visión distinta por favor háznosla saber en los comentarios.

  • Conoce las palabras reservadas del lenguaje C# y las palabras reservadas en un contexto pero sobre todo evita utilizarlas como identificadores con el uso del @. El siguiente programa compila pero no comunica el verdadero sentido del programa.
class @class
{
    //Evitar el uso de palabras reservadas en los identificadores
    public int @int { get; set; }
    public void @string () => Console.WriteLine(@int.ToString());
}
  • Usa nombres significativos para los identificadores. Compara las siguientes clases ambas compilan pero solo una expresa el sentido de la misma.
class Circunferencia
{
public int Radio { get; set; }
public double CalcularDiametro => Radio * 2;
public double CalcularArea => Math.PI * Math.Pow(Radio,2);
}

class c
{
public int r { get; set; }
public double d => r * 2;
public double a => Math.PI * r * r;
}
  • Conoce las expresiones idiomáticas de C#. Esto va desde lo más simple como propiedades y operadores ?? hasta cosas más complejas como eventos y delegados y cosas casi oscuras como tuplas, lambdas, yield , tipos anónimos y restricciones de tipos genericos. Aqui puedes ver una pregunta en StackOverFlow donde enumeran algunas de las características de C#.

  • Usa la notación Pascal para nombrar espacios de nombres, clases, métodos, estructuras, enumeraciones y propiedades publicas.

  • Usa la notación Camel para nombrar campos, variables.

  • Usar la notación de serpiente en los campos privados.

namespace MiEmpresa.Ventas
{
    public class Producto
    {
        private readonly int _impuesto;
        public Producto(string nombre, decimal precio)
        {
            _impuesto = 16;
            Nombre = nombre;
            Precio = precio;
        }
        public int Iva { get { return _impuesto; } }
        public decimal Precio { get; set; }
        public string Nombre { get; private set; }
        public decimal CalcularDescuento(int descuento)
        {
            return Precio * descuento / 100;
        }
    }
}
  • Procura tener una sola clase por archivo. Esto no aplica cuando usar la palabra clave partial para crear tipos o métodos parciales. Los diseñadores de código utilizan frecuentemente esta característica.

  • Especifica el modificador de acceso de forma explicita. Los diferentes miembros de un tipo de C# tienen un modificador de acceso predeterminado cuando no se especifica.

Para llevar

Para más detalles puedes revisar el documento Framework Design Guidelines - Convenciones generales de nomenclatura que explica detalladamente estos conceptos.

Dos libros que te pueden ayudar a profundizar el C# son Effective C# (Covers C# 6.0), (includes Content Update Program): 50 Specific Ways to Improve Your C# y More Effective C#: 50 Specific Ways to Improve Your C# de autor Bill Wagner.