Patrones de diseño y buenas prácticas

Antonio Ramirez 12 Septiembre 2016
5min
0

Recientemente he estado trabajando en un proyecto que consistía en la "actualización" de un programa de gestión y presupuestos. Básicamente, y sin entrar en demasiados detalles, el programa nos permite realizar unos cálculos, almacenarlos en ficheros y con estos realizar presupuestos, que dependiendo de los datos del cálculo, nos mostrará y permitirá elegir y añadir a dichos presupuestos los productos necesarios.

Así que al abrir el código para empezar a desarrollar las tareas encomendadas me encontré con una serie de problemas: no había prácticamente ni un solo comentario, ni había una separación entre la lógica del programa y la interfaz gráfica, encontrándonos casos en los que al cambiar algún elemento gráfico, el programa dejaba de funcionar correctamente. Finalmente conseguí terminar todas las modificaciones del proyecto, pero este caso me dio la idea para este post.

Cuando empiezas a programar aprendes lo básico: variables, constantes, clases, bucles, punteros, ifs, y demás propiedades o elementos de algún lenguaje de programación. Si además tienes profesores que te lo enseñen posiblemente harán hincapié en una serie de puntos que no tienen que ver realmente con la programación como tal, pero que al final uno acaba dándose cuenta que son muy útiles, estoy hablando de las llamadas "Buenas prácticas", que no son más que unas pequeñas reglas que nos ayudarán a hacer un méjor código, más claro y comprensible. 

Como Buenas prácticas podemos encontrar, aunque puede haber muchas más:

  • Comentarios: no es necesario comentar todo el código, aunque sí que es de utilidad describir lo que realiza el programa, para qué sirven las clases o las variables que se van a usar o describir los métodos o funciones que se usan.

  • Formateo: usar siempre el mismo formato de código, es decir, la indentación que sea igual, que no haya saltos en las tabulaciones, así se consigue mucha claridad a la hora de leer el código.

  • Nombre de variables y métodos: que sigan los estándares del lenguaje usado, tales como "nombre_variable" o "nombreMetodo".

  • Modularización: es decir, crear módulos o métodos que se dediquen a una función, de tal forma que esté todo lo más separado posible. Imaginemos una función con 400 líneas de código, donde se hacen una serie de operaciones. Si separamos esas operaciones obtendremos un código mucho más ordenado y límpio, además de poder localizar fácilmente partes que debamos corregir o actualizar.

Finalmente pregúntate: ¿Podría otro programador entender el código sin que se lo explicásemos, solo mirando los ficheros?. Si la respuesta es sí entonces vamos por buen camino.

Con respecto a los Patrones de diseño, muy probablemente no los oigas cuando estes empezando en esto de la programación, pues se necesitan conocimientos más avanzados.

Cuando hablamos de Patrones de diseño hablamos de soluciones para problemas típicos y recurrentes, es decir, nuestro programa en su conjunto será único, pero en su interior puede tener elementos que ya han sido usados en otros muchos programas, como por ejemplo conexiones a bases de datos, instancias de clases únicas, uso de una jerarquía de carpetas y ficheros, separación de los diferentes elementos, etc.

Estos patrones, como su nombre indica, muestran de forma abstracta como realizar una operación que nosotros debemos adaptar al lenguaje usado y a nuestro programa.

En mi caso echaba de menos el Modelo-Vista-Controlador, un patrón de diseño que separa en 3 partes bien diferenciadas nuestra aplicación. Con esto conseguimos tener una buena ordenación de todos los elementos, permitiendo hacer modificaciones en cualquiera de las partes sin necesidad de que se vean afectadas las demás partes.

Podemos simplificar las distintas partes de la siguiente forma:

  • Vista

Esta es la parte encargada del aspecto visual de nuestro programa, donde se muestran los datos con los que se trabaja, de tal forma que podemos mostrar o introducir datos.

  • Modelo

Es la parte que representa los datos que usa nuestra aplicación. Es la encargada de las consultas, actualizaciones, etc, a los orígenes de datos.

  • Controlador

Podemos definirlo como el intermediario entre la Vista y el Modelo, captura un evento de la Vista y solicita los datos al Modelo, realizando algún tipo de operación con esos datos y mostrando esos datos ya tratados en la Vista.

En el caso del proyecto que he actualizado, al no usar este tipo de patrón, ha significado un aumento del tiempo de desarrollo, además de una mayor complejidad a la hora de seguir la ejecución del programa.