SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
Redescubre la programación
Code Smells, Refactorings, y cosa fina
@JavierCaneMPWAR - LaSalle OpenDay 2016
¡Bienvenidos!
Soy Javier Ferrer González
Contenidos
! Introducción Code Smells y Refactoring
! QWAN Cards Contest
! Más allá de los Code Smells
! MPWAR
1.
Introducción Code Smells y Refactoring
Calidad de Software
Introducción Code Smells y Refactoring
Calidad de Software
Preguntas:
!¿Existe el código bueno y el código malo?
!¿Se puede medir objetivamente la calidad del Software?
Introducción Code Smells y Refactoring
Calidad de Software
Algunas respuestas:
!Semántico (Ubiquitous Language)
!Responsabilidades acotadas (SRP)
!Tolerante a cambios (OCP)
!No acoplado (DIP)
!Baja complejidad accidental
!Testeado
Code Smells
“ A code smell is a surface indication that usually
corresponds to a deeper problem in the system.
— Martin Fowler
2.
QWAN Cards Contest
Gamificación!
QWAN Cards Contest
! Organización por grupos
! Yo tengo Code Smells
! Vosotros Refactorings
! Diré 1 Code Smell
! El grupo que diga 1 Refactoring a aplicar, gana un punto
! El grupo con más puntos, gana la partida
! Al decir un refactoring, hay que justificar el por qué
! ¡Hay premio!
! ¡10 minutos!
! https://refactoring.guru/
! https://sourcemaking.com/refactoring
! http://refactoring.com/
! http://codely.tv/tag/refactoring/
! QWAN Cards
QWAN Cards Contest
Fuentes de información
! Long method (bloater)
◕ Refactorings:
◗ Extract method
◗ Decompose Conditional
◗ Replace Temp with Query
◗ Replace method with method object
◕ Debate: ¿Y si penalizamos rendimiento?
QWAN Cards Contest
Code Smells
! Primitive Obsession (bloater)
◕ Refactorings:
◗ Replace Data Value with Object
◗ Replace Type Code with Class
◕ Debate: ¿Y si creamos demasiadas clases?
QWAN Cards Contest
Code Smells
! Data Clumps (bloater)
◕ Refactorings:
◗ Preserve Whole Object
◗ Extract Class
◗ Introduce Parameter Object
QWAN Cards Contest
Code Smells
! Switch statements (OO abuser)
◕ Refactorings:
◗ Replace Type Code with Subclasses
◗ Replace Type Code with State/Strategy
◗ Replace Conditional with Polymorphism
◗ Introduce Null Object
QWAN Cards Contest
Code Smells
! Magic number (Change Preventer)
◕ Refactorings:
◗ Replace Magic Number with Symbolic Constant
QWAN Cards Contest
Code Smells
! Comments (Dispensable)
◕ Refactorings:
◗ Extract method
◗ Extract Variable
◗ Introduce Assertion
QWAN Cards Contest
Code Smells
3.
Más allá de los Code Smells
Cosa fina!
Más allá de los Code Smells
Cosa fina
! SOLID
! Composition over Inheritance
! Tell don’t ask
! Arquitectura Hexagonal
! DDD
! TDD
Más allá de los Code Smells
TDD
4.
MPWAR
Visión global
MPWAR
Visión Global
Entorno
HTML
PHP
JS
FW
DB
DE
MPWAR
Visión Global
Entorno
HTML
PHP
JS
FW
DB
DE
MPWAR
Visión Global
Entorno
HTML
PHP
JS
FW
DB
DE
Perf
MPWAR
Visión Global
Entorno
HTML
PHP
JS
FW
DB
DE
Perf
Emp
SEO
Seguridad
Contenidos/
Negocio
MPWAR
Visión Global
Frontend Backend
11 asignaturas
Visión global dentro de especialidad web
1 TFM
Lleva a la práctica todo lo aprendido
+300 horas lectivas
Profesores con experiencia profesional
¿Preguntas?
¡Gracias!
Contacto
@JavierCane
javier.mailserio@gmail.com
Codely.TV
Credits
! Presentation template by SlidesCarnival

Más contenido relacionado

Similar a Redescubre la programación - #MPWAR - #OpenDayLaSalle

DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishJordi Llonch
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishAkamon Engineering
 
Volviendo a poner el “soft” en software
Volviendo a poner el “soft” en softwareVolviendo a poner el “soft” en software
Volviendo a poner el “soft” en softwareDanijel Arsenovski
 
Buenas practicas desarrollando software
Buenas practicas desarrollando softwareBuenas practicas desarrollando software
Buenas practicas desarrollando softwareGabriel Moral
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Alfredo Chavez
 
Clase1 introduccinalcurso
Clase1 introduccinalcursoClase1 introduccinalcurso
Clase1 introduccinalcursojorg_marq
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Alfredo Chavez
 
Simulando para Integrar
Simulando para IntegrarSimulando para Integrar
Simulando para IntegrarLuisa Emme
 
Semana xiii.i
 Semana xiii.i Semana xiii.i
Semana xiii.ielssalinas
 
Curso TDD Ruby on Rails #01: Introducción al testing
Curso TDD Ruby on Rails #01: Introducción al testingCurso TDD Ruby on Rails #01: Introducción al testing
Curso TDD Ruby on Rails #01: Introducción al testingAlberto Perdomo
 
Inspección y evaluación de calidad de producto software... talk is cheap, sho...
Inspección y evaluación de calidad de producto software... talk is cheap, sho...Inspección y evaluación de calidad de producto software... talk is cheap, sho...
Inspección y evaluación de calidad de producto software... talk is cheap, sho...excentia
 
Net-Baires: CleanCode 20190622
Net-Baires: CleanCode 20190622Net-Baires: CleanCode 20190622
Net-Baires: CleanCode 20190622fernando sonego
 
15 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 200915 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 2009Pepe
 

Similar a Redescubre la programación - #MPWAR - #OpenDayLaSalle (20)

DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
 
Testing, tipos y otros flamewars
Testing, tipos y otros flamewarsTesting, tipos y otros flamewars
Testing, tipos y otros flamewars
 
Agile practices
Agile practicesAgile practices
Agile practices
 
Volviendo a poner el “soft” en software
Volviendo a poner el “soft” en softwareVolviendo a poner el “soft” en software
Volviendo a poner el “soft” en software
 
Buenas practicas desarrollando software
Buenas practicas desarrollando softwareBuenas practicas desarrollando software
Buenas practicas desarrollando software
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 
Clase1 introduccinalcurso
Clase1 introduccinalcursoClase1 introduccinalcurso
Clase1 introduccinalcurso
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 
Simulando para Integrar
Simulando para IntegrarSimulando para Integrar
Simulando para Integrar
 
Semana xiii.i
 Semana xiii.i Semana xiii.i
Semana xiii.i
 
Introducción a JavaScript
Introducción a JavaScriptIntroducción a JavaScript
Introducción a JavaScript
 
Curso TDD Ruby on Rails #01: Introducción al testing
Curso TDD Ruby on Rails #01: Introducción al testingCurso TDD Ruby on Rails #01: Introducción al testing
Curso TDD Ruby on Rails #01: Introducción al testing
 
Cuida tu código: Clean Code
Cuida tu código: Clean CodeCuida tu código: Clean Code
Cuida tu código: Clean Code
 
Inspección y evaluación de calidad de producto software... talk is cheap, sho...
Inspección y evaluación de calidad de producto software... talk is cheap, sho...Inspección y evaluación de calidad de producto software... talk is cheap, sho...
Inspección y evaluación de calidad de producto software... talk is cheap, sho...
 
Net-Baires: CleanCode 20190622
Net-Baires: CleanCode 20190622Net-Baires: CleanCode 20190622
Net-Baires: CleanCode 20190622
 
Depuracion errores scratch
Depuracion errores scratchDepuracion errores scratch
Depuracion errores scratch
 
Java Basico Platzi
Java Basico PlatziJava Basico Platzi
Java Basico Platzi
 
15 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 200915 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 2009
 
Programa De Estudio
Programa De EstudioPrograma De Estudio
Programa De Estudio
 

Más de Javier Ferrer González

#PhpirstAid - Replanteamiento de diseño de software
#PhpirstAid - Replanteamiento de diseño de software#PhpirstAid - Replanteamiento de diseño de software
#PhpirstAid - Replanteamiento de diseño de softwareJavier Ferrer González
 
Informática en El Mundo Real - Sesión de orientación
Informática en El Mundo Real - Sesión de orientaciónInformática en El Mundo Real - Sesión de orientación
Informática en El Mundo Real - Sesión de orientaciónJavier Ferrer González
 
#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...
#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...
#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...Javier Ferrer González
 

Más de Javier Ferrer González (7)

#PhpirstAid - Replanteamiento de diseño de software
#PhpirstAid - Replanteamiento de diseño de software#PhpirstAid - Replanteamiento de diseño de software
#PhpirstAid - Replanteamiento de diseño de software
 
Informática en El Mundo Real - Sesión de orientación
Informática en El Mundo Real - Sesión de orientaciónInformática en El Mundo Real - Sesión de orientación
Informática en El Mundo Real - Sesión de orientación
 
#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...
#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...
#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...
 
Gestión proyecto DroidClic android app
Gestión proyecto DroidClic android appGestión proyecto DroidClic android app
Gestión proyecto DroidClic android app
 
Introducción a Ruby on rails
Introducción a Ruby on railsIntroducción a Ruby on rails
Introducción a Ruby on rails
 
Introducción a CoffeeScript
Introducción a CoffeeScriptIntroducción a CoffeeScript
Introducción a CoffeeScript
 
Charla IES Marianao
Charla IES MarianaoCharla IES Marianao
Charla IES Marianao
 

Redescubre la programación - #MPWAR - #OpenDayLaSalle