Ejemplo patrón compuesto (Composite) en C#

Publicado el viernes, 30 de marzo de 2018


En este post, que es una continuación de "El patrón Comuesto (Composite) en C#",  voy a implementar un ejemplo del patrón a partir de un desarrollo que realicé para una empresa de producción industrial.

Consistía en crear un módulo para calcular los costes de productos formados por conjuntos de otros productos.

Inicié el desarrollo del módulo partiendo de la premisa Código Primero y apoyándome en el ejemplo canónico explicado en el post anterior.

leer más

Datos, pantallas o código: ¿por dónde empezar?

Publicado el jueves, 22 de febrero de 2018

Datos, pantallas o código: ¿por dónde empezar?


Cuando nos encontramos frente a un problema de desarrollo podemos atacarlo de tres modos diferentes:

  1. Datos primero (Data first)
  2. Pantallas primero (UI first)
  3. Código primero (Domain first)

Históricamente la mayoría de problemas de desarrollo se han atacado utilizando el modo “Datos primero”. Me atrevería a decir que, aún a día de hoy, esta es la manera más utilizada.

Sin embargo la tendencia está cambiando y el modo “código primero” va adquiriendo cada vez más adeptos.

En este post voy a explicar algunas ventajas y desventajas de las diferentes maneras en las que podemos afrontar problemas de desarrollo.

leer más

El patrón Comuesto (Composite) en C#

Publicado el domingo, 4 de febrero de 2018


Recientemente me encargaron desarrollar un módulo para calcular los costes de productos formados por conjuntos de otros productos. Lo primero que me vino a la cabeza cuando me explicaban los requisitos fue el patrón Compuesto (Composite).

El patrón me resultó útil con el planteamiento inicial, pero iba a tener que trabajar más allá de él para entregar una solución completa.

Este post forma parte de una serie de tres:

leer más

El patrón Observador en C#

Publicado el domingo, 15 de octubre de 2017


Quizá este sea el patrón más utilizado en programación, no solo en C#, sino en la mayoría de lenguajes.

La implementación en C# es muy sencilla y cualquiera que haya realizado una aplicación en WebForms, WinForms o WPF habrá aplicado este patrón aunque sea sin haberse dado cuenta. ¿Cómo puedo estar tan seguro? Porque la implementación en C# de este patrón son los eventos y dudo que haya programadores que no los utilicen :-)

En este post voy a explicar los conceptos y las ideas que hay detrás del patrón, mostraré diferentes versiones del patrón y finalmente implementaré un ejemplo utilizando los eventos, que es como se debería utilizar C#.

leer más

El patrón Estrategia en C#

Publicado el jueves, 17 de agosto de 2017

Patrón Estrategia en C#


Cuando conocí los patrones de diseño ya llevaba algunos años trabajando en el sector y hasta entonces no les había dado importancia. Estaban ahí pero era un tema distante. Incluso trabajando en equipos de grandes empresas con grandes proyectos, nadie los mencionaba.

Fue leer el primer capítulo del libro “Head First Dessign Patterns” y hacer “clic”: descubrí nuevos puntos de vista y nuevas maneras de programar. Hasta entonces utilizaba clases y objetos pero no estaba aprovechando todo el potencial de los conceptos de POO (Programación Orienteda a Objetos). Cuando un problema se complicaba, o cuando había un cambio en una especificación, lo resolvía utilizando la fuerza bruta: copy-paste y tira pa’lante.

Los patrones de diseño, y en especial el patrón estrategia, me llevó a comprender y aplicar mejor algunos de los conceptos de POO.

En este post voy a explicar el patrón de diseño estrategia con el mismo ejemplo que utiliza el libroHead First Dessign Patterns”. Una vez explicado también mostraré un caso real donde lo he aplicado.

leer más

Estrategias para controlar las excepciones en C#

Publicado el domingo, 2 de julio de 2017

Estrategias con excepciones en csharp


Al empezar cualquier aplicación es siempre una buena práctica definir una estrategia para controlar los posibles errores que puedan aparecer.

El primer instinto es colocar un try – catch en cada uno de los métodos de la aplicación, pero esto no es necesario, C# tiene mecanismos que permiten centralizar el control de las excepciones.

En este artículo voy a explicar las estrategias principales que uso para controlar el flujo de las excepciones.

leer más

El patrón Factoría Simple en C# desde un punto de vista de mantenibilidad

Publicado el sábado, 17 de junio de 2017

Factoría simple en C#


¿Qué hay de malo en utilizar “new”? 

No hay nada malo en utilizar "new", pero en el momento que lo haces estás creando un acoplamiento entre tu clase y la clase que crea la instancia. Ambas quedan ligadas para siempre.

Los patrones de factoría están diseñados para contrarrestar este efecto. Encapsulan la creación de objetos.

Hay tres patrones factoría conocidos:

  • Patrón Factoría Simple
  • Patrón Método Factoría
  • Patrón Factoría Abstracta

En este post escribiré sobre el patrón Factoría Simple y sobre dos niveles de abstracción previos a utilizar este patrón.

leer más

El patrón Singleton en C#

Publicado el sábado, 20 de mayo de 2017


El patrón de diseño Singleton fue descrito en el libro Dessign Patterns, Elements of Reusable Object-Oriented Software escrito por cuatro autores también conocidos como GoF (“Gang of four”).

La primera implementación que apareció del patrón, la del libro de GoF, es una implementación no segura en aplicaciones multi-hilo (not thread safe).

Es por ello que a lo largo del tiempo han ido apareciendo sucesivas implementaciones “thread safe” con diferentes pros y contras. En este artículo sólo mostraré implementaciones “thread safe”.

leer más

La paginación de este blog en cuatro pasos

Publicado el viernes, 21 de abril de 2017


Una de las características más comunes de las aplicaciones es mostrar listas en pantalla. En el caso de un blog, la pantalla principal es justamente una lista que muestra los "posts".

Si la lista es corta, por ejemplo, entre diez y veinte elementos, lo más común es mostrarlos todos. Si en cambio la lista contiene muchos elementos, eso no resulta eficaz. Cuando hay muchos elementos lo habitual es mostrar una parte de ellos, por ejempo los diez primeros, y permitir al usuario poder escoger si quiere ver los siguientes.

Esto lo podemos conseguir rápidamente en cuatro pasos utilizando PagedList.Mvc

leer más

Añadir comentarios a tu blog con Disqus y MVC5

Publicado el sábado, 25 de marzo de 2017


Los comentarios son una de las funcionalidades principales de un blog y también una de las más peligrosas. A través de los comentarios es posible realizar diferentes ataques a un blog

Digamos que es como una puerta abierta que dejas al exterior y no sabes qué puede entrar.

El más común de los "ataques" es el spam, y los más conocidos son la inyección de sql y la inyección de javascript, pero no son los únicos :(. A la hora de plantear una funcionalidad con comentarios en tu blog, es vital pensar en todos estos aspectos y diseñar mecanismos de defensa contra ellos. De lo contrario tu blog correrá el peligro de ser aniquilado.

leer más