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!!)

5 comentarios

  1. Que buen post vos objeto, muy buen tema, aaaaaa me recuerdo de esos tiempos (proga1 jajaja) en q los modulos no existian en muchas de nuestras cabezas, pero si ojo con esto, ya que es muy importante en el orden del codigo para su entendimiento facil.

    a y por cierto gracias por el vergaso del GOTO jajaja, puta vos estabamos probando a ver si existia, segun java no existia jajaja, pero nosotros lo creamos jajajajaja, q buena shit…

    por eso ahora sacaremos nuestro JAVA_ILOVE_GOTO (una evolucion del JDeveloper jajaja) en su version 1.2, porq la 1.1 ya nos la gano puppy jajaja

    buena onda vos objeto

  2. El goto fue vetado porque hacia dificil la representacion del flujo del programa a la vista del programador. Pero cada persona tiene ojos diferentes… y alcances diferentes… por lo que si alguien usa goto en Java … o en C#, puede que sea que lo que le sobre sea cerebro NO abstraccion. Y si tanto te molesta perder el control del flujo NO uses nunca AOP

  3. En el proyecto en el que estoy, en VB.Net, es donde he tenido la oportunidad de usar Reflection y Generics a mansalva ahorrandome codigo y limitando los futuros problemas a un par de clases, cuando compañeros mios querian hacer a mano unos 50 mantenimientos.
    Estos mismos no entienden la diferencia entre contenido, interaccion, diseño en xhtml/html, la importancia de un javascript no intrusivo, el uso de estandares, etc.

    En este sector la pena es que el cliente muchas veces no sabe lo que hay debajo de un programa, sitio web o desarrollo en general, ni entiende de usabilidad, arquitectura de la información, etc.
    Muchas veces solo ven el resultado visual, y el presupuesto.

    Menos mal que no todo es asi!!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: