Modularidad | OOP

↑ Me gusta (0)

Este es un concepto muy sencillo; podemos imaginarlo como un módulo que unido a otros módulos forman un proyecto. Crear todo un sistema en un index.php no tiene nada que ver con la modularidad. Ahora pensemos en todas las partes de nuestros sistema, cada pequeña parte (módulo) independiente ayuda a que nuestro sistema realmente funcione.

Si vemos a Laravel podemos entender que tiene este concepto tan en su esencia que lo usamos y manejamos sin saber que esto existe. Laravel aplica este principio al pie de la letra.

Siendo más técnicos podemos definir que la modularidad consiste en dividir un sistema en módulos, donde cada módulo debe ser lo mas independiente posible del resto. La idea es probar por separado cada módulo y dar garantía de su funcionamiento individual y entre ellos.

Este principio básicamente nos ayuda a tener cada vez piezas de código mas pequeñas y mas entendibles, digamos por ejemplo: Es mejor atender netamente el módulo de usuarios que es un archivo de cuarenta (40) líneas de código que todo el proyecto. Esto es capacidad de "descomponer".

El concepto nos lleva a que también se debe permitir la composición y esto simplemente indica que cualquier programador pueda crear, completar o resolver problemas con el menor trauma posible.

Con todo esto tenemos un sistema separado y organizado y los beneficios son palpables:

  1. Mejor lectura del código.
  2. Rápido mantenimiento.
  3. Estándar.

La modularidad es un concepto de programación orientada a objetos, ahora cómo aplicamos esto en PHP. Tomando en cuenta que el único elemento que es posible componer y descomponer es una clase, pero podemos llevar esto a un nivel superior y pensar que organizar las vistas, controladores, helpers, entidades y clases propias aplicando patrones de diseño es una forma acertada de implementar la modularidad.

En la explicación de Programación Estructurada y OOP de Código espagueti se ilustró muy bien este ejemplo. Allí empezamos con un controlador llamado LoginController.php y dentro el método login().

Logramos sacar adelante la solicitud de iniciar sesión pero luego dividimos en varios métodos a esta solución login(), validate(), attempt(), failed() y response().

Sin embargo, vimos también la necesidad final de crear a una clase llamada Auth.php y mudamos todos nuestros métodos allá, teniendo como resultado a LoginController.php con un solo método llamado login() y a una clase Auth.php con su responsabilidad y organización.

El concepto de modularidad debe ser parte de nuestro día a día, incluso fuera del mundo de la programación.