La “calistenia” de objetos, es un término acuñado por Jeff Bay en un ensayo que escribió para el libro “ThoughtWorks Anthology”, de buenas prácticas y técnicas para el desarrollo de software.
Lo que describe en ese ensayo es una serie de reglas de programación, que pueden parecer extremas a primera vista, y cuyo objetivo es hacer pensar al diseñador para producir un buen código orientado a objetos. Algo que no siempre es evidente de conseguir, quizá porque tradicionalmente, cuando empezamos a programar, lo primero que vemos son ejemplos procedurales, de hecho, una de las primeras construcciones que aprendemos es el if/else.
Entre las 9 reglas que se proponen para ejercitar encontramos estas: Un nivel de indentación por método, no usar ELSE, no usar getters/setters, etc. Como digo, parecen extremas, pero no se trata de reglas para aplicar siempre, sino para ejercitar, y cada una esconde algún patrón de diseño o alguna buena práctica detrás.
C++ es un lenguaje orientado a objetos (aunque también permite otras metodologías y aproximaciones), pero no es difícil encontrar código que parece “C con clases”, y donde el uso de la encapsulación y otros principios brilla por su ausencia.
En la charla explicaré las reglas del ensayo, y las ilustraré con ejemplos construidos en C++ donde se pueda apreciar el concepto o buena práctica de orientación a objetos que cada una una pretende cubrir, así como la manera de implementarlo con C++.
[slides]
Mi nombre es Aníbal Cáceres, y trabajo como Software Designer en Ericsson, en el Centro de I+D que la compañía tiene en Madrid. Actualmente mi rol es el de Software Architect del PCRF (Policy and Charging Rules Function) de Ericsson, que es el nodo encargado de la gestión de políticas en redes de acceso Móvil (3G, LTE), y Fijo. Nuestro PCRF está construido principalmente en C++, y éste es el lenguaje de programación que más he usado (a excepción de un poquito de Java) durante mis 14 años en Ericsson. Estoy interesado en el uso eficiente de C++ y en el conocimiento de cómo el lenguaje ha ido evolucionando, y han cambiado las maneras de trabajar con él, así como en las buenas prácticas de Diseño Software en general.