Cohesion, Modularidad, Acoplamiento y Refactoring de codigo. Buenas practicas en desarrollo de software.

  • por javier
  • 31 de Marzo de 2023

En desarrollo de software, en un contexto de metodologías ágiles o bien tirando código mediante prueba y error existen prácticas que harán nuestro código más mantenible, mas legible y de mejor calidad. Algunas de estas prácticas son las siguientes, empezaremos por modularidad y cohesion en el software, lo cual es imprescindible en el buen código.

Cohesión y modularidad son dos conceptos importantes en el desarrollo de software, que se relacionan con la estructura y la organización del código.

La cohesión se refiere a la medida en que los componentes (como clases o métodos) de un sistema trabajan juntos para lograr una tarea común. Una alta cohesión significa que los componentes están muy relacionados entre sí y trabajan juntos de manera eficiente y efectiva, mientras que una baja cohesión significa que los componentes están menos relacionados y no trabajan juntos de manera tan efectiva. Una buena cohesión es importante porque reduce la complejidad del sistema, facilita la comprensión y el mantenimiento del código y aumenta la reutilización.

La modularidad se refiere a la capacidad de un sistema para ser descompuesto en módulos o componentes independientes, que pueden ser diseñados, probados, desarrollados y mantenidos por separado. La modularidad es importante porque reduce la complejidad, aumenta la reutilización y facilita el mantenimiento y la evolución del código. Los módulos bien diseñados son independientes unos de otros y tienen una interfaz clara y bien definida que especifica cómo se comunican con otros módulos.

En general, una buena cohesión y modularidad son características deseables en el código porque permiten la creación de sistemas más eficientes, mantenibles y escalables.

El acoplamiento se refiere a la medida en que los módulos están interconectados o dependen entre sí. Un alto acoplamiento significa que los módulos tienen muchas interacciones y dependencias, mientras que un bajo acoplamiento significa que los módulos tienen pocas interacciones y dependencias. Un acoplamiento excesivo puede hacer que el código sea más difícil de mantener y escalar, ya que los cambios realizados en un módulo pueden tener un efecto en cascada en otros módulos. Por lo tanto, es importante minimizar el acoplamiento y maximizar la modularidad y la cohesión en el diseño de software.

Luego, como técnica para transformar nuestro código en algo mejor estructurado, o bien para rehacer y/o entender código de otros, tenemos técnicas de refactoring de código, que permitirá mejorar mucho nuestro código o código de terceros. Estas prácticas son imprescindibles en metodologías ágiles de desarrollo de software. Paso a enumerar técnicas...

El refactoring es un proceso importante en el desarrollo de software, que implica mejorar el código existente sin cambiar su comportamiento externo. Aquí están algunas técnicas de refactoring que se consideran útiles y efectivas:

  1. Extract Method: Esta técnica implica tomar un bloque de código largo y dividirlo en métodos más pequeños y cohesivos, lo que hace que el código sea más fácil de entender y mantener.

  2. Inline Method: Esta técnica implica eliminar un método que se ha vuelto innecesario al reemplazar todas sus referencias con el contenido del método.

  3. Extract Class: Esta técnica implica tomar un grupo de atributos y métodos relacionados y moverlos a una nueva clase, lo que ayuda a reducir la complejidad y mejorar la cohesión.

  4. Replace Conditional with Polymorphism: Esta técnica implica reemplazar bloques grandes de código condicional con una jerarquía de clases que se encargan de diferentes casos, lo que hace que el código sea más fácil de entender y mantener.

  5. Introduce Parameter Object: Esta técnica implica agrupar un conjunto de parámetros relacionados en un objeto para reducir la cantidad de parámetros pasados a una función y mejorar la cohesión.

  6. Move Method: Esta técnica implica mover un método de una clase a otra para mejorar la cohesión y la modularidad.

  7. Replace Magic Number with Symbolic Constant: Esta técnica implica reemplazar valores numéricos literales con constantes con nombres significativos, lo que hace que el código sea más legible y mantenible.

  8. Remove Duplication: Esta técnica implica eliminar código duplicado para mejorar la mantenibilidad y reducir la cantidad de trabajo necesario para hacer cambios en el código.

Estas son solo algunas de las técnicas de refactoring que se pueden utilizar. Es importante tener en cuenta que la elección de una técnica depende del contexto específico del código y del problema que se esté intentando resolver.

Como intro para mejorar la calidad de vuestro software, esto sería un comienzo. Es recomendable de todas formas realizar algunos diagramados y/o como mínimo tarjetas CRC con tareas a realizar en nuestro proyecto software, sobre todo cuando los proyectos se incrementan en complejidad y/o tamaño. Si os parece esto interesante, podriais leer algo más sobre ingeniería del software y demás. Esto siempre os ayudará a no crear mal código o inmantenible cuando son proyectos grandes, spaguetti code o similar, que con los años, puede volverse una pesadilla si os toca lidiar con el, ya no por los demás si no por vosotros mismos.

 

blog comments powered by Disqus

Introducción a metodologías ágiles de desarrollo. Programación Extrema. (XP)

  • por javier
  • 21 de Marzo de 2023

La programación extrema (XP) es una metodología de desarrollo, si puede ser considerada como tal, pues se caracteriza por ser un conjunto de prácticas y no está considerada como metodología por una extensa mayoría de ingenieros del software.eXtreme Programming

No obstante, es de extendido uso en proyectos software y sus prácticas han sido de amplia aceptación en muchos casos, sobre todo proyectos pequeños o medianos debido a su curva de aprendizaje suave, a producir código de calidad, completamente funcional, sin fallos ni sorpresas para el cliente, que, siempre percibirá un producto final adecuado a sus necesidades, no a lo que creen los analistas o desarrolladores que necesita el cliente.

Update cookies preferences