Después de dos días de ver como declarar nombres de objetos y de como ir colocando nuestras líneas de código de manera ordenada, ahora es turno de ver como puedes hacer lo mismo con los métodos. Comencemos.
Evita escribir métodos muy largos, un método típicamente debe tener entre 1 y 25 líneas de código. Si ese método tiene mas de 25 líneas, deberías considerar su refactorización en otros separados.
El nombre del método debe decirte que es lo que hace. No utilices nombres confusos. Si el nombre del método es obvio, no hay necesidad de mucha documentación que explique que es lo que hace.
Un método debería hacer solo “una cosa”. Evita combinar mas de una tarea en un método, aún si estas tareas son muy pequeñas.
Utiliza los tipos específicos para C# en lugar de los tipos definidos en el espacio de nombres System.
int edad; //No INT16 string nombre; //No String object objetoValor; //No Object |
Siempre contempla valores no esperados. Por ejemplo, si utilizas un parámetro con dos tipos de valores posibles, nunca asumas que si uno no esta correcto entonces la posibilidad es el otro valor.
No utilices código “hardcoded”. Utiliza constantes en su lugar. Aunque tampoco es lo mas recomendable utilizar constantes, de preferencia los valores pueden ser tomados de un archivo de configuración de modo que lo puedas cambiar después.
private const int numeroUno = 1; private void MetodoDeEjemplo() { if (numeroUno == 1) { } } |
No utilices textos “hardcoded”, utiliza mejor archivos de recursos.
Convierte las cadenas a minúsculas o mayúsculas antes de comparar. Esto asegurará que la cadena coincida incluso en casos en donde puede no hacerlo.
private void ObtenerDatos() { if (nuevosElementos.Nombre.ToLower() == "juan") { } } |
Usa String.Empty en lugar de “”;
string miNombreRecibido = string.Empty; |
Utiliza enumeradores para indicar valores, no uses números o letras.
public enum Objetos { pantalla, gabinete, teclado, mouse } private void ElegirDispositivo(Objetos argumento) { switch (argumento) { case Objetos.pantalla: break; case Objetos.gabinete: break; case Objetos.teclado: break; case Objetos.mouse: break; default: break; } } |
Un manejador de eventos no debe contener funcionalidad, sino que solo debe invocar al método que se encargará de toda esa funcionalidad.
private void WindowLoaded(object sender, RoutedEventArgs e) { IniciarAplicacion(); } private void IniciarAplicacion() { //Funcionalidad de la tarea. } |
Nunca asumas que tu código correrá en la misma ruta, no sabes si un usuario tiene rutas diferentes.
No uses mas de una clase en un solo archivo.
Evita utilizar archivos muy grandes, si tu archivo rebasa las 1000 líneas de código, considera refactorizarlo.
Evita métodos y propiedades públicas a menos que ser estrictamente necesarios.
Evita pasar muchos parámetros a un método. Si tienes mas de 4-5 parámetros, es un buen momento para definir una clase o estructura.
Si un método te regresará una colección, regresa una colección vacía en lugar de nula si no hay datos por regresar.
¿Ubicas la clase AssemblyInfo.cs? Si no lo ubicas es momento de que lo hagas, llena esa clase con todos los datos posibles.
Organiza todos tus archivos dentro de las carpetas adecuadas, puedes tener hasta 10 carpetas en el proyecto raíz y ahí mismo puedes tener hasta 5 carpetas por cada una de estas, si tienes demasiadas carpetas que ya no puedan acomodarse dentro de este nivel de jerarquía, quizá necesitas crear múltiples ensamblados.
Utiliza la clase StringBuilder en lugar de String cuando tengas que manipular objetos en un ciclo.
public string CrearMensaje (string[] lineas) { StringBuilder mensaje = new StringBuilder(); for (int i = 0; i < lineas.Length; i++) { mensaje.Append( lineas[i] ); } return mensaje.ToString(); } |
Excelecnte post!! si que ayuda para tener mejores practicas de programación este post y el de manejo de excepciones fueron geniales, podrias postear mas acerca de mejores practicas de programación??…Saludos!!