Redescubre la programaciónCode 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 asignaturasVisión global dentro de especialidad web
1 TFMLleva a la práctica todo lo aprendido
+300 horas lectivasProfesores con experiencia profesional
¿Preguntas?
¡Gracias!Contacto @JavierCane [email protected] Codely.TV