Anexsoft | Blog y dictado de cursos de Tecnología

En este encontrarás tutoriales de tecnología como PHP, ASP.NET MVC, Front-End, entre otros y cursos exigentes de modalidad online que te ayudarán a crecer profesionalmente.

Patrón Módulo con Javascript (Module Pattern)
Actualizado el 25 Febrero, 2017 y leído 1,302 veces
Calificación: 10.00 / 10

Patrón Módulo con Javascript (Module Pattern)

Anexsoft

Este patrón problablemente lo hayamos usado antes sin darnos cuenta y sin saber que era, a mí me ha pasado. La idea es crear un módulo que nos permita encapsular cierta lógica para que sea reutilzable en nuestro proyecto.

 

El problema de tener todo en funciones sueltas

Por ejemplo, antes yo solia tener todo en funciones y mi código quedaba muy desorganizado teniendo algo como esto:

function calcularIva(monto) {
    return monto * iva;
}

function calcularMontoSinIva(monto){
    return monto / (1 + iva);
}

function calcularUtilidad(costo, ingreso){
    return ingreso - costo;
}

function calcularTasaEfectivaAnual(capital, interes, periodos) {
    return capital * Math.pow(1 + interes, periodos);
}

Si bien esto es práctico y funciona, en proyectos reales este código va a ser mucho más extenso y vas a ser más tedioso de mantener. Así que lo mejor es optmizar todo el código usando el patrón Module.

 

Mejor usa módulos

var Formulas = (function(){
    var iva = 0.18;

    return {
        calcularIva: function(monto) {
            return monto * iva;
        },
        calcularMontoSinIva: function(monto){
            return monto / (1 + iva);
        },
        calcularUtilidad: function(costo, ingreso) {
            return ingreso - costo;
        },
        calcularTasaEfectivaAnual: function(capital, interes, periodos) {
            return capital * Math.pow(1 + interes, periodos);
        }
    };
})();

La variable Formulas es el Namespace (espacio de nombre) del módulo contiene una función autoejecutable. Una vez inicializada la variable será un Object que contiene la lógica que hemos especificado. Por ejemplo, si queremos llamar a las funciones de nuestro módulo Formulas, solo tendremos que llamar a sus propiedades.

Formulas.calcularMontoSinIva(400); // 338.98305084745766
Formulas.calcularIva(400); // 78
Formulas.calcularTasaEfectivaAnual(10000, 0.05, 2); // 11025

La principal ventaja es que nuestro código queda más limpio y ordenado. Por ejemplo, si entra un nuevo programador a la empresa ya no tendrá que leer todas las funciones sueltas que hay en nuestro proyecto generándole confusión, en este caso solo se limtará en el módulo (puede hacer un console.log a la variable Formulas para ver lo que tiene disponible).

 

Creando sub módulos dentro de un módulo

Podemos optimizar más nuestro módulo creando sub namespaces o pequeños módulos dentro de módulo.

var Formulas = (function(){
    var iva = 0.18;

    return {
        venta: {
            calcularIva: function(monto) {
                return monto * iva;
            },
            calcularMontoSinIva: function(monto){
                return monto / (1 + iva);
            },
            calcularUtilidad: function(costo, ingreso) {
                return ingreso - costo;
            }
        },
        financiera: {
            calcularTasaEfectivaAnual: function(capital, interes, periodos) {
                return capital * Math.pow(1 + interes, periodos);
            }
        }
    };
})();

Ahora nuestro módulo Formulas cuenta con 2 submódulos adicionales para ordenar mejor la lógica.

Formulas.venta.calcularMontoSinIva(400); // 338.98305084745766
Formulas.venta.calcularIva(400); // 78
Formulas.financiera.calcularTasaEfectivaAnual(10000, 0.05, 2); // 11025

¡Adquiera ya!

  • Software de Portafolio Profesional hecho en ASP.NET MVC 5 C#

    Software de Portafolio Profesional hecho en ASP.NET MVC 5 C#
  • Código de fuente de Red Social desarrollada en ASP.NET MVC

    Código de fuente de Red Social desarrollada en ASP.NET MVC
  • Software de Venta e Inventario hecho en PHP y Codeigniter

    Software de Venta e Inventario hecho en PHP y Codeigniter

Últimas publicaciones

Encuesta

¿Cómo nos conociste?

Síguenos

Estudia con nosotros y crece profesionalmente

Nuestros cursos han sido hecho en base a lo que demanda el mercado hoy en día.
La experiencia obtenida es la de un ambiente laboral.

Anexsoft
© 2017 Anexsoft, blog y cursos online de TI.