leanmind logo leanmind text logo

Blog

BDD

Behaviour-driven Development es una técnica para tomar mejores requisitos de producto.

Aspect Oriented Programming

Por Jorge Aguiar Martín

La programación orientada a aspectos (AOP en inglés) es un paradigma de programación distinto al que estamos acostumbrados. Para describirlo de manera sencilla, se trata de ejecutar piezas de código (Advice), en un punto concreto de la ejecución (JoinPoint), sin que ese código ejecutado sepa que por detrás se ha ejecutado algo. Sí, es básicamente añadir “side effects” al código.

Dicho de esta manera puede sonar super extraño y seguro te preguntarás, ¿para qué iba a querer añadir esas acciones a mi código? ¿No se supone que hacer esto está mal? La respuesta es, depende… Sí, tener “side effects” en el código no es precisamente lo más recomendable, pero dependiendo de qué acciones desencadenemos, podemos permitirnos el lujo de usarlas o no.

Veamos los conceptos básicos mientras vemos el uso práctico de los mismos.

Aspect

Es una funcionalidad transversal que se va a implementar. En nuestro caso, el logging de la aplicación. Solemos ver un montón de código en nuestras aplicaciones, incluso en nuestra capa de dominio que tiene que ver con loggear, ya que es super importante para la observabilidad de la aplicación, pero en cierta manera, eso no define nuestro dominio. No suele ser una norma de nuestro dominio que dejemos rastro de las operaciones que se van tomando, por lo que acabamos con un montón de líneas de código irrelevantes para el dominio, que nosotros como personas técnicas, necesitamos para la resolución de problemas.

JoinPoint

Es el punto en la ejecución en el cual un aspecto puede ser ejecutado. Es decir, es el punto en el que nuestro aspecto ejecutará una acción adicional cuando esta pase. Puede ser una llamada a un método, un acceso a una propiedad de una clase, un lanzamiento de excepción, e incluso, la modificación de un campo de una clase. En nuestro caso, un método sobre el que queramos escribir un log.

Advice

Es la pieza de código que será ejecutada en un JoinPoint concreto. Una clase que escribirá el mensaje que nos pasen.

PointCut

Es la definición de la relación entre los JoinPoint y los Advice, es decir, la forma de especificar que un AdviceX será ejecutado cuando un JoinPointY tenga lugar en la ejecución del programa.

Veamos un diagrama para ilustrar todos estos conceptos:

Captura de pantalla 2023-11-10 a las 10.20.59

Este post, es sólo una introducción a los conceptos de AOP para facilitar la comprensión de un siguiente post sobre logging de nuestra aplicación, usando el stack ELK.

Publicado el 14/07/2024 por
Jorge image

Jorge Aguiar Martín

¿Quieres más? te invitamos a suscribirte a nuestro boletín para avisarte cada vez que recopilemos contenido de calidad que compartir.

Si disfrutas leyendo nuestro blog, ¿imaginas lo divertido que sería trabajar con nosotros? ¿te gustaría?

Impulsamos el crecimiento profesional de tu equipo de developers