Modularización, un problema pendiente…

Es lamentable que muchos estudiantes de la carrera de Sistemas no apliquen los conceptos más importantes de modularización, sea cual sea el lenguaje… Es algo inaceptable que un proyecto largo, como los que suelen dejar en los cursos de Sistemas de la USAC, venga si mucho un par de archivos fuente.

Recuerdo en mis tiempos, cuando llevé progra 1/progra 2, y se programaba en C existían proyectos con una modularización que daba pena, ya que ni modularizaban a nivel algoritmico ( o sea, todo lo hacian en el void main() olvidando los principios fundamentales de la programación descendente), mucho menos utilizaban diferentes archivos para la división semántica del proyecto, y en algunos caso llegaban a utilizar hasta sentencias goto!!(incluso todavía hay gente que lo utilizan en java… que pecado a la abstracción).

Por ello, es importante una buena modularización, tanto para el entendimiento del propio código, como del código ajeno (ojo Willy), además de que ayuda
evitar código redundante.

Cada lenguaje y compilador cuenta con sus propias herramientas y técnicas, además de “barreras naturales” para una mayor modularización, listaré algunos ejemplos básicos:

  • HTML/XHTML del lado cliente: Dividir el contenido, presentación e interacción en diferentes archivos .htm/.xhtml, .css,(Hoja de estilos) y .js (javascript). Esto es muy importante mas si se van a utilizar RSS Feeds.
  • Java: Utilizando un public class por cada .java, y aplicando el concepto de packages, ademas de utilizar generics cuando sea posible para evitar redundancia.
  • C#: Aplicando un public class por cada .cs, tratar de enfocar todo el motor en las librerías, y utilizar namespaces, generics, y reflexion cuando sea posible.
  • C: Contener la definición en un .h, y la implementación en un .c, tratando de colocar las estructuras de datos y declaraciones en el .h, y colocando sólo los algoritmos y funciones para estas estructuras de datos en su respectivo .c.
  • C++: Aplican los mismos principios que en C, ademas de hacer uso de namespaces para evitar colisiones, y templates para evitar redundancia.

Bueno, estos son los principales, en los que regularmente se suele hacer un espagueti de código (en especial C). Tomen el consejo… modularizen y sigan la regla KISS (Keep it simple, stupid!!)

Anuncios