SlideShare una empresa de Scribd logo
JavaScript no es Vietnam
Patrones y pruebas

                           Alex Casquete



                                           1
ESTE SOY YO
          Alex Casquete
         twitter: acasquete
       blog: www.idlebit.es
Hablemos de JavaScript…
JavaScript es…
JavaScript is in the air
JavaScript no es como cualquier
otro lenguaje orientado a objetos
    No vale con tirar líneas de código sin más
Tiene importantes diferencias con otros lenguajes
var myBeer = {
    “name” : “Moritz”,
    “take” : function() { alert(“Great!”); },
    “displayName” : function() {
        alert(this.name + “ is my Beer”);
    },
    “drink” : function() {
        // not implemented
    }
};

myBeer.displayName();
myBeer.drink();
PATRONES DE CREACIÓN DE OBJETOS
NAMESPACE - DECLARING DEPENDENCIES - PRIVATE PROPERTIES AND
METHODS – REVELATION PATTERN - MODULE PATTERN - SANDBOX -
STATIC MEMBERS - OBJECT CONSTANTS - CHAINING PATTERN

PATRONES DE REUTILIZACIÓN DE CÓDIGO
PROTOTYPAL INHERITANCE - INHERITANCE BY COPYING PROPERTIES –
MIX-INS - BORROWING METHODS

PATRONES DE DISEÑO
BUILDER – FACTORY – SINGLETON – DECORATOR – FAÇADE – PROXY –
CHAIN OF RESPOSIBILITY – COMMAND - ITERATOR – MEDIATOR –
OBSERVER - STRATEGY
Patrón Module
      var basketModule = (function() {
          var basket = []; //private
          return { //exposed to public
              addItem: function(values) {
                  basket.push(values);
              },
              getItemCount: function() {
                  return basket.length;
              },
              getTotal: function(){
                 var q = this.getItemCount(),p=0;
                  while(q--){
                      p+= basket[q].price;
                  }
                  return p;
              }
          }
      }());




                                                    9
Patrón Mediator


     Módulo 1


                  doSomething
     Módulo 2                   Mediator
                     done!



     Módulo 3




                                           10
Patrón Mediator
      var mediator = (function(){
          var subscribe = function(channel, fn){
              if (!mediator.channels[channel]) mediator.channels[channel] = [];
              mediator.channels[channel].push({ context: this, callback: fn });
              return this;
          },

         publish = function(channel){
             if (!mediator.channels[channel]) return false;
             var args = Array.prototype.slice.call(arguments, 1);
             for (var i = 0, l = mediator.channels[channel].length; i < l; i++) {
                 var subscription = mediator.channels[channel][i];
                 subscription.callback.apply(subscription.context, args);
             }
             return this;
         };

          return {
              channels: {},
              publish: publish,
              subscribe: subscribe,
              installTo: function(obj){
                  obj.subscribe = subscribe;
                  obj.publish = publish;
              }
          };
       }());
                                                                                    11
Patrón Façade
 var module = (function() {                             module.facade({run: true, val:10});
     var _private = {
         i:5,                                           //devuelve ‘current value: 10, running’
         get : function() {
              console.log('current value:' + this.i);
         },
         set : function( val ) {
              this.i = val;
         },
         run : function() {
              console.log('running');
         },
         jump: function(){
              console.log('jumping');
         }
     };
     return {
         facade : function( args ) {
              _private.set(args.val);
              _private.get();
              if ( args.run ) {
                  _private.run();
              }
         }
     }
 }());


                                                                                                  12
Patterns For Large-Scale JavaScript
         Application Architecture

Decouple app. architecture w/module,facade &
mediator patterns. Mods publish msgs, mediator
acts as pub/sub mgr & facade handles security


    http://addyosmani.com/largescalejavascript/
Pruebas
Las pruebas unitarias no son para JavaScript
SI NO PRUEBAS
TU CÓDIGO VAS A
   CONOCER EL
     DOLOR
JavaScript es díficil de probar
Si no tenemos nuestro código preparado
Código mezclado con HTML
Eventos en línea en el HTML
Frameworks Testing JavaScript
Un poco de código
Utiliza patrones
No reinventes la rueda
  Prueba tu código

                         20
MicroCharlas CatDotNet 26 de julio 2012

Más contenido relacionado

La actualidad más candente

C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
Creacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeansCreacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeans
Leonel Martinez Carrion
 
7 Ventajas de Funciones en PHP
7 Ventajas de Funciones en PHP7 Ventajas de Funciones en PHP
7 Ventajas de Funciones en PHP
Javier Peñaranda
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++
cemayoral
 
Desarrollo De Programas Ejemplos 01
Desarrollo De Programas Ejemplos 01Desarrollo De Programas Ejemplos 01
Desarrollo De Programas Ejemplos 01
Leonel Martinez Carrion
 
Ejemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlEjemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stl
UVM
 
Lenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de ControlLenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de Control
Karina Arguedas Ruelas
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuario
UVM
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificado
compumet sac
 
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
computaciondosunefm
 
Estructuras de control en la POO
Estructuras de control en la POOEstructuras de control en la POO
Estructuras de control en la POO
Amado Arcaya
 
Funciones de Cadenas/ Computación para ingenieros
Funciones de Cadenas/ Computación para ingenierosFunciones de Cadenas/ Computación para ingenieros
Funciones de Cadenas/ Computación para ingenieros
Maria jose Ramirez perez
 
Semana 2 Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Semana 2   Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)Semana 2   Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Semana 2 Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Richard Eliseo Mendoza Gafaro
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
Jose Eamirez
 
Funciones
FuncionesFunciones
Funciones
Carlos QF
 
Script de Punteros a Funciones
Script de Punteros a FuncionesScript de Punteros a Funciones
Script de Punteros a Funciones
AnesGy SD
 
Curso basico c sharp
Curso basico c sharpCurso basico c sharp
Curso basico c sharp
Roberto Moreno Doñoro
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_
HUGOJAREDSANCHEZMARTINEZ
 

La actualidad más candente (18)

C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
C++ y sus librerias
 
Creacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeansCreacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeans
 
7 Ventajas de Funciones en PHP
7 Ventajas de Funciones en PHP7 Ventajas de Funciones en PHP
7 Ventajas de Funciones en PHP
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++
 
Desarrollo De Programas Ejemplos 01
Desarrollo De Programas Ejemplos 01Desarrollo De Programas Ejemplos 01
Desarrollo De Programas Ejemplos 01
 
Ejemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlEjemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stl
 
Lenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de ControlLenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de Control
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuario
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificado
 
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
 
Estructuras de control en la POO
Estructuras de control en la POOEstructuras de control en la POO
Estructuras de control en la POO
 
Funciones de Cadenas/ Computación para ingenieros
Funciones de Cadenas/ Computación para ingenierosFunciones de Cadenas/ Computación para ingenieros
Funciones de Cadenas/ Computación para ingenieros
 
Semana 2 Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Semana 2   Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)Semana 2   Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Semana 2 Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
 
Funciones
FuncionesFunciones
Funciones
 
Script de Punteros a Funciones
Script de Punteros a FuncionesScript de Punteros a Funciones
Script de Punteros a Funciones
 
Curso basico c sharp
Curso basico c sharpCurso basico c sharp
Curso basico c sharp
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_
 

Similar a JavaScript no es Vietnam

Reactividad en Angular, React y VueJS
Reactividad en Angular, React y VueJSReactividad en Angular, React y VueJS
Reactividad en Angular, React y VueJS
Javier Abadía
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
Víctor Bolinches
 
Javascript no es vietnam
Javascript no es vietnamJavascript no es vietnam
Javascript no es vietnam
Fernando Escolar Martínez-Berganza
 
Javascript OOP
Javascript OOPJavascript OOP
Javascript OOP
Gabriel Chertok
 
ECMAScript 6
ECMAScript 6ECMAScript 6
ECMAScript 6
Paradigma Digital
 
Clase 5 funciones en javaScript
Clase 5 funciones en javaScriptClase 5 funciones en javaScript
Clase 5 funciones en javaScript
José Ricardo Tillero Giménez
 
Angular Conceptos Practicos 2
Angular Conceptos Practicos 2Angular Conceptos Practicos 2
Angular Conceptos Practicos 2
Sergio Castillo Yrizales
 
07 funciones
07 funciones07 funciones
2 f programas
2 f programas2 f programas
2 f programas
Diego Garcia Lorenzo
 
2 f programas
2 f programas2 f programas
2 f programas
Diego Garcia Lorenzo
 
Curso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzadosCurso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzados
Álvaro Alonso González
 
Por pagar
Por pagarPor pagar
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
CloudAppi
 
Curso de Desarrollo Web 2
Curso de Desarrollo Web 2Curso de Desarrollo Web 2
Curso de Desarrollo Web 2
juliocombativo
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
MarlonAlbertoGalvis
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilón
betabeers
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
Manuel Carrasco Moñino
 
Creación de Builders y DSL's con Groovy
Creación de Builders y DSL's con GroovyCreación de Builders y DSL's con Groovy
Creación de Builders y DSL's con Groovy
Jose Juan R. Zuñiga
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
CloudAppi
 
Resumen java
Resumen javaResumen java
Resumen java
Emerson Garay
 

Similar a JavaScript no es Vietnam (20)

Reactividad en Angular, React y VueJS
Reactividad en Angular, React y VueJSReactividad en Angular, React y VueJS
Reactividad en Angular, React y VueJS
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
Javascript no es vietnam
Javascript no es vietnamJavascript no es vietnam
Javascript no es vietnam
 
Javascript OOP
Javascript OOPJavascript OOP
Javascript OOP
 
ECMAScript 6
ECMAScript 6ECMAScript 6
ECMAScript 6
 
Clase 5 funciones en javaScript
Clase 5 funciones en javaScriptClase 5 funciones en javaScript
Clase 5 funciones en javaScript
 
Angular Conceptos Practicos 2
Angular Conceptos Practicos 2Angular Conceptos Practicos 2
Angular Conceptos Practicos 2
 
07 funciones
07 funciones07 funciones
07 funciones
 
2 f programas
2 f programas2 f programas
2 f programas
 
2 f programas
2 f programas2 f programas
2 f programas
 
Curso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzadosCurso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzados
 
Por pagar
Por pagarPor pagar
Por pagar
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
 
Curso de Desarrollo Web 2
Curso de Desarrollo Web 2Curso de Desarrollo Web 2
Curso de Desarrollo Web 2
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilón
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 
Creación de Builders y DSL's con Groovy
Creación de Builders y DSL's con GroovyCreación de Builders y DSL's con Groovy
Creación de Builders y DSL's con Groovy
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
 
Resumen java
Resumen javaResumen java
Resumen java
 

Más de Alex Casquete

Redis no es solo una caché
Redis no es solo una cachéRedis no es solo una caché
Redis no es solo una caché
Alex Casquete
 
Functional Programming with F#: Getting Started & Basic Concepts
Functional Programming with F#: Getting Started & Basic ConceptsFunctional Programming with F#: Getting Started & Basic Concepts
Functional Programming with F#: Getting Started & Basic Concepts
Alex Casquete
 
Working with disconnected data in Windows Store apps
Working with disconnected data in Windows Store appsWorking with disconnected data in Windows Store apps
Working with disconnected data in Windows Store apps
Alex Casquete
 
45 F#antastic minutes!
45 F#antastic minutes!45 F#antastic minutes!
45 F#antastic minutes!
Alex Casquete
 
Aplicaciones robustas con Programación Orientada a Aspectos
Aplicaciones robustas con Programación Orientada a AspectosAplicaciones robustas con Programación Orientada a Aspectos
Aplicaciones robustas con Programación Orientada a Aspectos
Alex Casquete
 
Entity Framework 4 desde cero
Entity Framework 4 desde ceroEntity Framework 4 desde cero
Entity Framework 4 desde cero
Alex Casquete
 

Más de Alex Casquete (6)

Redis no es solo una caché
Redis no es solo una cachéRedis no es solo una caché
Redis no es solo una caché
 
Functional Programming with F#: Getting Started & Basic Concepts
Functional Programming with F#: Getting Started & Basic ConceptsFunctional Programming with F#: Getting Started & Basic Concepts
Functional Programming with F#: Getting Started & Basic Concepts
 
Working with disconnected data in Windows Store apps
Working with disconnected data in Windows Store appsWorking with disconnected data in Windows Store apps
Working with disconnected data in Windows Store apps
 
45 F#antastic minutes!
45 F#antastic minutes!45 F#antastic minutes!
45 F#antastic minutes!
 
Aplicaciones robustas con Programación Orientada a Aspectos
Aplicaciones robustas con Programación Orientada a AspectosAplicaciones robustas con Programación Orientada a Aspectos
Aplicaciones robustas con Programación Orientada a Aspectos
 
Entity Framework 4 desde cero
Entity Framework 4 desde ceroEntity Framework 4 desde cero
Entity Framework 4 desde cero
 

Último

Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
ValeriaAyala48
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
sofiahuarancabellido
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
NicandroMartinez2
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
LilibethEstupian
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
paulroyal74
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
bendezuperezjimena
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
mantenimientocarbra6
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
AMADO SALVADOR
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
AMADO SALVADOR
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
larapalaciosmonzon28
 
modelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptxmodelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptx
evelinglilibethpeafi
 
IA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticulturaIA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticultura
Miguel Rebollo
 
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdfInformació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Festibity
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Festibity
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
CesarPazosQuispe
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
AMADO SALVADOR
 
SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
tamarita881
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Festibity
 

Último (20)

Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
 
modelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptxmodelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptx
 
IA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticulturaIA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticultura
 
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdfInformació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
 
SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
 

JavaScript no es Vietnam

  • 1. JavaScript no es Vietnam Patrones y pruebas Alex Casquete 1
  • 2. ESTE SOY YO Alex Casquete twitter: acasquete blog: www.idlebit.es
  • 6. JavaScript no es como cualquier otro lenguaje orientado a objetos No vale con tirar líneas de código sin más Tiene importantes diferencias con otros lenguajes
  • 7. var myBeer = { “name” : “Moritz”, “take” : function() { alert(“Great!”); }, “displayName” : function() { alert(this.name + “ is my Beer”); }, “drink” : function() { // not implemented } }; myBeer.displayName(); myBeer.drink();
  • 8. PATRONES DE CREACIÓN DE OBJETOS NAMESPACE - DECLARING DEPENDENCIES - PRIVATE PROPERTIES AND METHODS – REVELATION PATTERN - MODULE PATTERN - SANDBOX - STATIC MEMBERS - OBJECT CONSTANTS - CHAINING PATTERN PATRONES DE REUTILIZACIÓN DE CÓDIGO PROTOTYPAL INHERITANCE - INHERITANCE BY COPYING PROPERTIES – MIX-INS - BORROWING METHODS PATRONES DE DISEÑO BUILDER – FACTORY – SINGLETON – DECORATOR – FAÇADE – PROXY – CHAIN OF RESPOSIBILITY – COMMAND - ITERATOR – MEDIATOR – OBSERVER - STRATEGY
  • 9. Patrón Module var basketModule = (function() { var basket = []; //private return { //exposed to public addItem: function(values) { basket.push(values); }, getItemCount: function() { return basket.length; }, getTotal: function(){ var q = this.getItemCount(),p=0; while(q--){ p+= basket[q].price; } return p; } } }()); 9
  • 10. Patrón Mediator Módulo 1 doSomething Módulo 2 Mediator done! Módulo 3 10
  • 11. Patrón Mediator var mediator = (function(){ var subscribe = function(channel, fn){ if (!mediator.channels[channel]) mediator.channels[channel] = []; mediator.channels[channel].push({ context: this, callback: fn }); return this; }, publish = function(channel){ if (!mediator.channels[channel]) return false; var args = Array.prototype.slice.call(arguments, 1); for (var i = 0, l = mediator.channels[channel].length; i < l; i++) { var subscription = mediator.channels[channel][i]; subscription.callback.apply(subscription.context, args); } return this; }; return { channels: {}, publish: publish, subscribe: subscribe, installTo: function(obj){ obj.subscribe = subscribe; obj.publish = publish; } }; }()); 11
  • 12. Patrón Façade var module = (function() { module.facade({run: true, val:10}); var _private = { i:5, //devuelve ‘current value: 10, running’ get : function() { console.log('current value:' + this.i); }, set : function( val ) { this.i = val; }, run : function() { console.log('running'); }, jump: function(){ console.log('jumping'); } }; return { facade : function( args ) { _private.set(args.val); _private.get(); if ( args.run ) { _private.run(); } } } }()); 12
  • 13. Patterns For Large-Scale JavaScript Application Architecture Decouple app. architecture w/module,facade & mediator patterns. Mods publish msgs, mediator acts as pub/sub mgr & facade handles security http://addyosmani.com/largescalejavascript/
  • 15. Las pruebas unitarias no son para JavaScript
  • 16. SI NO PRUEBAS TU CÓDIGO VAS A CONOCER EL DOLOR
  • 17. JavaScript es díficil de probar Si no tenemos nuestro código preparado Código mezclado con HTML Eventos en línea en el HTML
  • 19. Un poco de código
  • 20. Utiliza patrones No reinventes la rueda Prueba tu código 20
  • 21.
  • 22.
  • 23. MicroCharlas CatDotNet 26 de julio 2012