SlideShare una empresa de Scribd logo
Programación Orientada a Objetos
(js)
2
Workshop (objetivos)
● Preguntarnos
– Ventajas y desventajas de utilizar if/switches
– Alternativas a estas estructuras
– Alternativas para reducir la cantiadad de
if/switch
– Ventajas y desventajas de estas alternativas
– Áreas de aplicación
– Qué significa escribir “buen código”?
3
Let’s rock!
● Domain Driven Design (DDD)
● Test Driven Desing (TDD)
4
Algunas respuestas
● Ventajas y desventajas de utilizar if/switches
– +) Es el standard
– - ) Previene pensar un diseno extensible
– - ) Complejidad Ciclomática (https://en.wikipedia.org/wiki/Cyclomatic_complexity)
– - ) Dificulta las pruebas
– - ) Dificulta entendimiento de código
– - ) Genera código difícil de extender
5
Alternativa (Prototipos o Clases)
● Ventajas
– +) Extensible
– +) S.O.L.I.D
● Single Responsability
● Open/Close principle
– + ) Reduce posibilidad de errores
– + ) Patrón nulo.
6
Conclusiones… ?
● Prototipar o clasificar
● Utilizar if de ser necesario o standard
● Dar entidad a las cosas
● Utilizar metodología de diseño
● Medir esfuerzo actual y futuro
● Fomentar la refactorizar
● Buen código:
– Pruebas → refactorización,
– Cobertura,
– Olores (Code Smells).
7
Quién…?
● Ingeniero en Informática de la Facultad de Ingeniería de la UBA.
● Docente de Programación Orientada a Objetos (FIUBA).
● Docente de Algoritmos y Programación III (UNTREF)
● Tutor/Colaborador en Nodeschool BA.
● Colaborador en BANode.
@dsminotauro diegosanchez about me (próximamente)

Más contenido relacionado

Similar a Reducción de ifs en JavaScript con Programación Orientada a Prototipos

TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasTDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
Orlando Bustos Mateluna
 
Agile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvilAgile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvil
agilenavarra
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
Carlos Camacho
 
Introducción Análisis y Diseño
Introducción Análisis y DiseñoIntroducción Análisis y Diseño
Introducción Análisis y Diseño
Carlos A. Iglesias
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
Carlos Camacho
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
Miguel Ángel Sánchez Chordi
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Carlos Delgado Estremera
 
Tema 1 multiprocesadores
Tema 1 multiprocesadoresTema 1 multiprocesadores
Tema 1 multiprocesadores
Kuma Sanchez
 
Java12
Java12Java12
Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01
Javier Morales
 
TDD Course (Spanish)
TDD Course (Spanish)TDD Course (Spanish)
TDD Course (Spanish)
Pedro Ballesteros
 
Swift migration. the true history
Swift migration. the true historySwift migration. the true history
Swift migration. the true history
idealistacreamcode
 
Arquitectura software.taxonomias.modularidad.001
Arquitectura software.taxonomias.modularidad.001Arquitectura software.taxonomias.modularidad.001
Arquitectura software.taxonomias.modularidad.001
Jose Emilio Labra Gayo
 
Inyección de dependencia
Inyección de dependenciaInyección de dependencia
Inyección de dependencia
Adrián Paredes
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino
webcat
 
Alternativas metodológicas
Alternativas metodológicasAlternativas metodológicas
Alternativas metodológicas
Cristhian Cobo Naranjo
 
POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a Objetos
Franklin Parrales Bravo
 
6 Principios de Programación Orientada a Objetos
6 Principios de Programación Orientada a Objetos6 Principios de Programación Orientada a Objetos
6 Principios de Programación Orientada a Objetos
Jose Emilio Labra Gayo
 
Tdd desde las_trincheras
Tdd desde las_trincherasTdd desde las_trincheras
Tdd desde las_trincheras
Juan Lladó Rodríguez
 
s03 - modelo de referencia para desarrollo de proyectos
s03 - modelo de referencia para desarrollo de proyectoss03 - modelo de referencia para desarrollo de proyectos
s03 - modelo de referencia para desarrollo de proyectos
Mario Solarte
 

Similar a Reducción de ifs en JavaScript con Programación Orientada a Prototipos (20)

TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasTDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
 
Agile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvilAgile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvil
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
 
Introducción Análisis y Diseño
Introducción Análisis y DiseñoIntroducción Análisis y Diseño
Introducción Análisis y Diseño
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Tema 1 multiprocesadores
Tema 1 multiprocesadoresTema 1 multiprocesadores
Tema 1 multiprocesadores
 
Java12
Java12Java12
Java12
 
Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01
 
TDD Course (Spanish)
TDD Course (Spanish)TDD Course (Spanish)
TDD Course (Spanish)
 
Swift migration. the true history
Swift migration. the true historySwift migration. the true history
Swift migration. the true history
 
Arquitectura software.taxonomias.modularidad.001
Arquitectura software.taxonomias.modularidad.001Arquitectura software.taxonomias.modularidad.001
Arquitectura software.taxonomias.modularidad.001
 
Inyección de dependencia
Inyección de dependenciaInyección de dependencia
Inyección de dependencia
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino
 
Alternativas metodológicas
Alternativas metodológicasAlternativas metodológicas
Alternativas metodológicas
 
POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a Objetos
 
6 Principios de Programación Orientada a Objetos
6 Principios de Programación Orientada a Objetos6 Principios de Programación Orientada a Objetos
6 Principios de Programación Orientada a Objetos
 
Tdd desde las_trincheras
Tdd desde las_trincherasTdd desde las_trincheras
Tdd desde las_trincheras
 
s03 - modelo de referencia para desarrollo de proyectos
s03 - modelo de referencia para desarrollo de proyectoss03 - modelo de referencia para desarrollo de proyectos
s03 - modelo de referencia para desarrollo de proyectos
 

Último

Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
dayronfabricioruizmo
 
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
Eduardo455921
 
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) -  JRM - APSTI I ADuckDuckGo (Motor de Busqueda) -  JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
DarnotOcxalFlorianoP
 
Introduccion al Lenguaje de Programación C++
Introduccion al Lenguaje de Programación  C++Introduccion al Lenguaje de Programación  C++
Introduccion al Lenguaje de Programación C++
PaulDelgadoSoto
 
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Javier Martinez Seco
 
APLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdfAPLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdf
jordanovillacorta09
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
sesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWAREsesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWARE
YanelyMedalithBM
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
Maria Celeste Trujillo Cruz
 

Último (10)

Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
 
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
 
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) -  JRM - APSTI I ADuckDuckGo (Motor de Busqueda) -  JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
 
Introduccion al Lenguaje de Programación C++
Introduccion al Lenguaje de Programación  C++Introduccion al Lenguaje de Programación  C++
Introduccion al Lenguaje de Programación C++
 
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
 
APLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdfAPLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdf
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
sesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWAREsesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWARE
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
 

Reducción de ifs en JavaScript con Programación Orientada a Prototipos

  • 2. 2 Workshop (objetivos) ● Preguntarnos – Ventajas y desventajas de utilizar if/switches – Alternativas a estas estructuras – Alternativas para reducir la cantiadad de if/switch – Ventajas y desventajas de estas alternativas – Áreas de aplicación – Qué significa escribir “buen código”?
  • 3. 3 Let’s rock! ● Domain Driven Design (DDD) ● Test Driven Desing (TDD)
  • 4. 4 Algunas respuestas ● Ventajas y desventajas de utilizar if/switches – +) Es el standard – - ) Previene pensar un diseno extensible – - ) Complejidad Ciclomática (https://en.wikipedia.org/wiki/Cyclomatic_complexity) – - ) Dificulta las pruebas – - ) Dificulta entendimiento de código – - ) Genera código difícil de extender
  • 5. 5 Alternativa (Prototipos o Clases) ● Ventajas – +) Extensible – +) S.O.L.I.D ● Single Responsability ● Open/Close principle – + ) Reduce posibilidad de errores – + ) Patrón nulo.
  • 6. 6 Conclusiones… ? ● Prototipar o clasificar ● Utilizar if de ser necesario o standard ● Dar entidad a las cosas ● Utilizar metodología de diseño ● Medir esfuerzo actual y futuro ● Fomentar la refactorizar ● Buen código: – Pruebas → refactorización, – Cobertura, – Olores (Code Smells).
  • 7. 7 Quién…? ● Ingeniero en Informática de la Facultad de Ingeniería de la UBA. ● Docente de Programación Orientada a Objetos (FIUBA). ● Docente de Algoritmos y Programación III (UNTREF) ● Tutor/Colaborador en Nodeschool BA. ● Colaborador en BANode. @dsminotauro diegosanchez about me (próximamente)