Introducción a Object Calisthenics

carlosvigueras

Carlos Vigueras

Posted on April 13, 2024

Introducción a Object Calisthenics

En esta entrada me gustaría hacer una breve introducción a Object Calisthenics, y en las próximas iré introduciendo cada una de las 9 reglas que Jeff Bay presentó por primera vez en su libro The ThoughtWorks Anthology.

Object se refiere a la programación orientada a objetos y Calisthenics, se refiere a Calistenia, que según la RAE significa

Conjunto de ejercicios que conducen al desarrollo de la agilidad y fuerza física.

Por lo que ambas palabras unidas en el contexto de la programación orientada a objetos se podrían llegar a entender como “ejercicios de programación que te pueden ayudar a interiorizar las bases de un buen diseño orientado a objetos“, añadiendo a esto un buen sistema de práctica para poder desarrollar un código mas legible, limpio y entendible.

Personalmente aconsejo ir poniendo primero estas buenas prácticas en base a la refactorización de código mediante Katas, y una vez tengamos una soltura mínima pasemos ya a practicarlo en un proyecto real, pero tengamos en cuenta las siguientes premisas si vamos a refactorizar un código productivo:

Usar refactorizaciones seguras en base a una herramienta del estilo a ReSharper.
Tener en dicho proyecto una buena cobertura de Test, los cuales nos van a permitir en todo momento cerciorarnos que la refactorización que estamos realizando es totalmente segura.
De otro modo, si vamos a poner en práctica estos ejercicios en un proyecto o evolutivo nuevo se ha de tener en cuenta siempre realizar una buena Suite de Test.

Según Jeff Bay en su libro definió 9 reglas básicas a poner en práctica cuando se realizan estos ejercicios:

  • Un nivel de indentación por método
  • No usar la palabra clave Else.
  • Envolver todos las primitivos y Strings en clases.
  • Colecciones como clases de primer orden.
  • Aplica la Ley de Demeter
  • No abreviar.
  • Todas las clases deben tener menos de 50 líneas.
  • Evitar más de dos atributos de instancia
  • Evitar getters/setters o atributos públicos

En mi experiencia personal, he ido poco a poco adquiriendo estas 9 reglas en mi día a día en mi ámbito laboral y he conseguido con el tiempo poder llegar a desarollar un código mas simple, limpio y entendible en todos los sentidos.

Hay que tener en cuenta que no siempre es posible al 100% seguir estas 9 reglas, pero al menos si saber identificarlas, y comento que no es posible seguirlas al pie de la letra, ya que muchas veces evitando un Code Smell generamos otro o bien por como esté implementado el negocio, o bien por como esté estructurado el código no es posible refactorizar de una forma rápida y limpia. Cada caso es distinto y hay que saber identificar el cuándo, el cómo y si realmente merece la pena aplicar cualquiera de estas 9 reglas en cada caso concreto.

En mi próxima entrada voy a ir haciendo una introducción de como identificar en una kata cada una de estas 9 reglas, ya que en proyectos de refactorización lo primero que recomiendo es identificar los Object Calisthenics existentes antes de refactorizar nada.

💖 💪 🙅 🚩
carlosvigueras
Carlos Vigueras

Posted on April 13, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related