SlideShare una empresa de Scribd logo
CURSO DE TESTING OSL
        12 – 16 DE ABRIL 2010



                    Buenas prácticas
           en el desarrollo de aplicaciones web

Alberto Perdomo

Web:         http://albertoperdomo.net
Email:       alberto.perdomo@aentos.es
Twitter:     @albertoperdomo             http://www.aentos.com
EL CÓDIGO PERDURA


No escribas código del que te vayas a sentir
              avergonzado.

   Alguien lo va a ver tarde o temprano.



       http://www.flickr.com/photos/andre5/4408196113/
ESCRIBE CÓDIGO
      LIMPIO Y LEGIBLE
Un buen código Ruby no precisa de muchos
              comentarios


      http://www.flickr.com/photos/luisbg/2072134438/
CONVENCIONES

   “Sigue las convenciones”
      Están ahí por algo.
  No luches contra corriente.




http://www.flickr.com/photos/talaakso/3741346743/
USA HERRAMIENTAS




Hay herramientas, gemas y plugins para casi todo
           lo que puedas imaginar.

   Directorio: http://www.ruby-toolbox.com/

          http://www.flickr.com/photos/usefulguy/226373498/
D on't
R epeat
Y ourself         Introducing...

          Inherited Resources




    Imágen: http://www.fickr.com/photos/cowfsh/132547104/
DRY: REFACTORIZAR




       Primero repite,
      luego refactoriza




 http://www.flickr.com/photos/vinothchandar/4257167174/
Separation of concerns (SoC)
→ Modularidad
→ Encapsulamiento
→ Distribución de
responsabilidades
THE Fat model
&   the skinny controller




      Imágen: http://www.fickr.com/photos/kylemay/553916826/
Ley de Demeter:
“Habla sólo con tus
     amigos”
   Imágen: http://www.fickr.com/photos/desireedelgado/3423389473/
#1                                                                         NMO*: muy alto



#2                                                                         NMO*: MEDIO alto



                                                                            NMO*: MEDIO


#3                                                                      *NMO = NIVEL DE MAL OLOR


     Código:
     http://brian.maybeyoureinsane.net/blog/2006/12/15/law-of-demeter-or-how-to-avoid-coding-yourself-into-a-corner-in-rails/
DELEGATE, FTW!!




                                                                                AquI HUELE A
                                                                                ROSAS!!!!

Código:
http://brian.maybeyoureinsane.net/blog/2006/12/15/law-of-demeter-or-how-to-avoid-coding-yourself-into-a-corner-in-rails/
TAFT
“Test All the F***ing Time”
        Bryan Liles




    Video Ruby HoeDown 2008
El Zen del Testing




 “Encuentra el equilibrio”
Cada uno tiene su combo.
Imágen: http://www.fickr.com/photos/digitalart/2912152377/
Sé disciplinado:

                                                       Practica
                                                      tu combo

                                                       Haz TDD


                                                     “Dar cera,
                                                     pulir cera”

http://www.flickr.com/photos/kevinpoh/3650866967/
CÓDIGO / TESTING
Comportamiento
→ Piensa en comportamiento, no en implementación
→ El código expresa comportamiento
→ Tu código debe ser una “caja negra”


Tests = ejemplos de comportamiento


Haz que los tests dirijan tu código
→ RED → GREEN → REFACTOR
EVITA LOS TEST FRÁGILES

→ se rompen con facilidad


→ síntomas: cada vez que refactorizas tienes que
actualizarlos


→ prueban detalles de implementación no comportamiento
HAZ TESTS
CON LO QUE PREFIERAS, PERO HÁZLOS




     http://www.fickr.com/photos/sebastian_bergmann/2282734669/
HÁZLOS, EN SERIO




http://www.fickr.com/photos/sebastian_bergmann/2291013416/
USA CONTROL DE VERSIONES
Distribuídos
   → Git          → el más popular (recomendado)
   → Darcs
   → Mercurial
   →…


Centralizados
   → Subversion   → bueno para empezar
   → CVS          → bienvenidos a la prehistoria
   → Sourcesafe   → “si lo usas no me lo digas”
   → ...
CONTROL DE
VERSIONES

“Piensa en los gatitos”




  http://www.fickr.com/photos/mathias-erhart/2562106102/
AUTOMATIZA


   Todo tiene que ser
      reproducible

    Hacer las cosas a
     mano no sirve

    Tu tiempo es oro


http://www.fickr.com/photos/macinate/3454346075/
AUTOMATÍZAR LOS TEST

Integración continua (ejecutar los test en el
                 servidor)

          Integrity, CruiseControl.rb, Hudson



         Ejecutar los test en local

                  AutoTest, ZenTest
AUTOMATIZAR: SERVIDORES




  Instalar y confgurar servidores

            Chef, Puppet, ...
AUTOMATIZAR: DESPLIEGUE



Despliega la aplicación de forma automática
                 a los server

                 ¡Capistrano!
¿PREGUNTAS?

Más contenido relacionado

Destacado

Introduccion al desarrollo de aplicaciones web con Ruby on Rails
Introduccion al desarrollo de aplicaciones web con Ruby on RailsIntroduccion al desarrollo de aplicaciones web con Ruby on Rails
Introduccion al desarrollo de aplicaciones web con Ruby on Rails
AncorCruz
 
Ruby 101 && Coding Dojo
Ruby 101 && Coding DojoRuby 101 && Coding Dojo
Ruby 101 && Coding Dojo
Guilherme
 
Ruby 101 session 5
Ruby 101 session 5Ruby 101 session 5
Ruby 101 session 5
Sergio Castillo Yrizales
 
Ruby 101 session 1
Ruby 101 session 1Ruby 101 session 1
Ruby 101 session 1
Sergio Castillo Yrizales
 
Ruby 101 session 4
Ruby 101 session 4Ruby 101 session 4
Ruby 101 session 4
Sergio Castillo Yrizales
 
Ruby 101
Ruby 101Ruby 101
Ruby101
Ruby101Ruby101
Ruby101
Nola Stowe
 
Ruby 101 session 3
Ruby 101 session 3Ruby 101 session 3
Ruby 101 session 3
Sergio Castillo Yrizales
 
CSS Preprocessors - Sass
CSS Preprocessors - SassCSS Preprocessors - Sass
CSS Preprocessors - Sass
Lourdes Montano
 
Curso TDD Ruby on Rails #06: Mocks y stubs
Curso TDD Ruby on Rails #06: Mocks y stubsCurso TDD Ruby on Rails #06: Mocks y stubs
Curso TDD Ruby on Rails #06: Mocks y stubs
Alberto Perdomo
 
Conviértete en un desarrollador web front-end
Conviértete en un desarrollador web front-endConviértete en un desarrollador web front-end
Conviértete en un desarrollador web front-end
video2brain_mx
 
Desarrollo Agil con Ruby Y Rails
Desarrollo Agil con Ruby Y RailsDesarrollo Agil con Ruby Y Rails
Desarrollo Agil con Ruby Y Rails
Fran Diéguez
 
Sass: CSS con Superpoderes
Sass: CSS con SuperpoderesSass: CSS con Superpoderes
Sass: CSS con Superpoderes
Edgar Parada
 
Desarrollo Ágil y Ruby on Rails
Desarrollo Ágil y Ruby on RailsDesarrollo Ágil y Ruby on Rails
Desarrollo Ágil y Ruby on Rails
Ernesto Jiménez
 
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR
Jose Rojas Desarrollo Rapido de Aplicaciones con RoRJose Rojas Desarrollo Rapido de Aplicaciones con RoR
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR
Jose Rojas
 
Pre-procesadores CSS. SASS
Pre-procesadores CSS. SASSPre-procesadores CSS. SASS
Pre-procesadores CSS. SASS
MarionaCruz
 
Uso de las Infraestructuras de Datos Espaciales en Astronomía
Uso de las Infraestructuras de Datos Espaciales en AstronomíaUso de las Infraestructuras de Datos Espaciales en Astronomía
Uso de las Infraestructuras de Datos Espaciales en Astronomía
Jose Gomez Castaño
 
Ruby intro
Ruby introRuby intro
Ruby intro
Miguel Fernández
 
Lenguaje de programación Ruby
Lenguaje de programación RubyLenguaje de programación Ruby
Lenguaje de programación Ruby
Cristian Alejandro Rojas Quintero
 
Sass y compass
Sass y compassSass y compass
Sass y compass
Medio y forma
 

Destacado (20)

Introduccion al desarrollo de aplicaciones web con Ruby on Rails
Introduccion al desarrollo de aplicaciones web con Ruby on RailsIntroduccion al desarrollo de aplicaciones web con Ruby on Rails
Introduccion al desarrollo de aplicaciones web con Ruby on Rails
 
Ruby 101 && Coding Dojo
Ruby 101 && Coding DojoRuby 101 && Coding Dojo
Ruby 101 && Coding Dojo
 
Ruby 101 session 5
Ruby 101 session 5Ruby 101 session 5
Ruby 101 session 5
 
Ruby 101 session 1
Ruby 101 session 1Ruby 101 session 1
Ruby 101 session 1
 
Ruby 101 session 4
Ruby 101 session 4Ruby 101 session 4
Ruby 101 session 4
 
Ruby 101
Ruby 101Ruby 101
Ruby 101
 
Ruby101
Ruby101Ruby101
Ruby101
 
Ruby 101 session 3
Ruby 101 session 3Ruby 101 session 3
Ruby 101 session 3
 
CSS Preprocessors - Sass
CSS Preprocessors - SassCSS Preprocessors - Sass
CSS Preprocessors - Sass
 
Curso TDD Ruby on Rails #06: Mocks y stubs
Curso TDD Ruby on Rails #06: Mocks y stubsCurso TDD Ruby on Rails #06: Mocks y stubs
Curso TDD Ruby on Rails #06: Mocks y stubs
 
Conviértete en un desarrollador web front-end
Conviértete en un desarrollador web front-endConviértete en un desarrollador web front-end
Conviértete en un desarrollador web front-end
 
Desarrollo Agil con Ruby Y Rails
Desarrollo Agil con Ruby Y RailsDesarrollo Agil con Ruby Y Rails
Desarrollo Agil con Ruby Y Rails
 
Sass: CSS con Superpoderes
Sass: CSS con SuperpoderesSass: CSS con Superpoderes
Sass: CSS con Superpoderes
 
Desarrollo Ágil y Ruby on Rails
Desarrollo Ágil y Ruby on RailsDesarrollo Ágil y Ruby on Rails
Desarrollo Ágil y Ruby on Rails
 
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR
Jose Rojas Desarrollo Rapido de Aplicaciones con RoRJose Rojas Desarrollo Rapido de Aplicaciones con RoR
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR
 
Pre-procesadores CSS. SASS
Pre-procesadores CSS. SASSPre-procesadores CSS. SASS
Pre-procesadores CSS. SASS
 
Uso de las Infraestructuras de Datos Espaciales en Astronomía
Uso de las Infraestructuras de Datos Espaciales en AstronomíaUso de las Infraestructuras de Datos Espaciales en Astronomía
Uso de las Infraestructuras de Datos Espaciales en Astronomía
 
Ruby intro
Ruby introRuby intro
Ruby intro
 
Lenguaje de programación Ruby
Lenguaje de programación RubyLenguaje de programación Ruby
Lenguaje de programación Ruby
 
Sass y compass
Sass y compassSass y compass
Sass y compass
 

Similar a Curso TDD Ruby on Rails #08: Buenas prácticas

Expoembebidos
ExpoembebidosExpoembebidos
Expoembebidos
20kblossomk29
 
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Johnny Ordóñez
 
BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
Enrique Sánchez-Bayuela
 
Madrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_iMadrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_i
Eduardo Ferro Aldama
 
Reglas de Código Simple
Reglas de Código SimpleReglas de Código Simple
Reglas de Código Simple
psluaces
 
Un newbie conoce a Sinatra
Un newbie conoce a SinatraUn newbie conoce a Sinatra
Un newbie conoce a Sinatra
Jano González
 
Devs.info
Devs.infoDevs.info
Devs.info
betabeers
 
Cómo ser un jedi developer
Cómo ser un jedi developerCómo ser un jedi developer
Cómo ser un jedi developer
Rodrigo De Frutos Ballesteros
 
Migrando CI a Docker
Migrando CI a DockerMigrando CI a Docker
Migrando CI a Docker
Patxi Gortázar
 
Las reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDO
Las reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDOLas reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDO
Las reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDO
Javier Abadía
 
Trash Robotic Router Platform (TRRP)
Trash Robotic Router Platform (TRRP)Trash Robotic Router Platform (TRRP)
Trash Robotic Router Platform (TRRP)
navajanegra
 
Sysdig
SysdigSysdig
Pegandose con android
Pegandose con androidPegandose con android
Pegandose con android
campusmilenio
 
Pegándose con Android
Pegándose con AndroidPegándose con Android
Pegándose con Android
campusmilenio
 

Similar a Curso TDD Ruby on Rails #08: Buenas prácticas (14)

Expoembebidos
ExpoembebidosExpoembebidos
Expoembebidos
 
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
 
BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
 
Madrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_iMadrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_i
 
Reglas de Código Simple
Reglas de Código SimpleReglas de Código Simple
Reglas de Código Simple
 
Un newbie conoce a Sinatra
Un newbie conoce a SinatraUn newbie conoce a Sinatra
Un newbie conoce a Sinatra
 
Devs.info
Devs.infoDevs.info
Devs.info
 
Cómo ser un jedi developer
Cómo ser un jedi developerCómo ser un jedi developer
Cómo ser un jedi developer
 
Migrando CI a Docker
Migrando CI a DockerMigrando CI a Docker
Migrando CI a Docker
 
Las reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDO
Las reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDOLas reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDO
Las reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDO
 
Trash Robotic Router Platform (TRRP)
Trash Robotic Router Platform (TRRP)Trash Robotic Router Platform (TRRP)
Trash Robotic Router Platform (TRRP)
 
Sysdig
SysdigSysdig
Sysdig
 
Pegandose con android
Pegandose con androidPegandose con android
Pegandose con android
 
Pegándose con Android
Pegándose con AndroidPegándose con Android
Pegándose con Android
 

Más de Alberto Perdomo

Primeros pasos con la base de datos de grafos Neo4j
Primeros pasos con la base de datos de grafos Neo4jPrimeros pasos con la base de datos de grafos Neo4j
Primeros pasos con la base de datos de grafos Neo4j
Alberto Perdomo
 
Leveraging relations at scale with Neo4j
Leveraging relations at scale with Neo4jLeveraging relations at scale with Neo4j
Leveraging relations at scale with Neo4j
Alberto Perdomo
 
Squire: A polyglot application combining Neo4j, MongoDB, Ruby and Scala @ FOS...
Squire: A polyglot application combining Neo4j, MongoDB, Ruby and Scala @ FOS...Squire: A polyglot application combining Neo4j, MongoDB, Ruby and Scala @ FOS...
Squire: A polyglot application combining Neo4j, MongoDB, Ruby and Scala @ FOS...
Alberto Perdomo
 
Rails for Mobile Devices @ Conferencia Rails 2011
Rails for Mobile Devices @ Conferencia Rails 2011Rails for Mobile Devices @ Conferencia Rails 2011
Rails for Mobile Devices @ Conferencia Rails 2011
Alberto Perdomo
 
Boost your productivity!: Productivity tips for rails developers - Lightning ...
Boost your productivity!: Productivity tips for rails developers - Lightning ...Boost your productivity!: Productivity tips for rails developers - Lightning ...
Boost your productivity!: Productivity tips for rails developers - Lightning ...
Alberto Perdomo
 
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
Alberto Perdomo
 
Curso TDD Ruby on Rails #02: Test Driven Development
Curso TDD  Ruby on Rails #02: Test Driven DevelopmentCurso TDD  Ruby on Rails #02: Test Driven Development
Curso TDD Ruby on Rails #02: Test Driven Development
Alberto Perdomo
 
Curso TDD Ruby on Rails #05: Shoulda
Curso TDD Ruby on Rails #05: ShouldaCurso TDD Ruby on Rails #05: Shoulda
Curso TDD Ruby on Rails #05: Shoulda
Alberto Perdomo
 
Curso TDD Ruby on Rails #04: Factorías de objetos
Curso TDD Ruby on Rails #04: Factorías de objetosCurso TDD Ruby on Rails #04: Factorías de objetos
Curso TDD Ruby on Rails #04: Factorías de objetos
Alberto Perdomo
 
Curso TDD Ruby on Rails #03: Tests unitarios
Curso TDD Ruby on Rails #03: Tests unitariosCurso TDD Ruby on Rails #03: Tests unitarios
Curso TDD Ruby on Rails #03: Tests unitarios
Alberto Perdomo
 
Curso TDD Ruby on Rails #02: Test Driven Development
Curso TDD Ruby on Rails #02: Test Driven DevelopmentCurso TDD Ruby on Rails #02: Test Driven Development
Curso TDD Ruby on Rails #02: Test Driven Development
Alberto Perdomo
 
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
Alberto Perdomo
 
Plugins de autenticación en Rails - Lightning talk Las Palmas On Rails 09/02/...
Plugins de autenticación en Rails - Lightning talk Las Palmas On Rails 09/02/...Plugins de autenticación en Rails - Lightning talk Las Palmas On Rails 09/02/...
Plugins de autenticación en Rails - Lightning talk Las Palmas On Rails 09/02/...
Alberto Perdomo
 

Más de Alberto Perdomo (13)

Primeros pasos con la base de datos de grafos Neo4j
Primeros pasos con la base de datos de grafos Neo4jPrimeros pasos con la base de datos de grafos Neo4j
Primeros pasos con la base de datos de grafos Neo4j
 
Leveraging relations at scale with Neo4j
Leveraging relations at scale with Neo4jLeveraging relations at scale with Neo4j
Leveraging relations at scale with Neo4j
 
Squire: A polyglot application combining Neo4j, MongoDB, Ruby and Scala @ FOS...
Squire: A polyglot application combining Neo4j, MongoDB, Ruby and Scala @ FOS...Squire: A polyglot application combining Neo4j, MongoDB, Ruby and Scala @ FOS...
Squire: A polyglot application combining Neo4j, MongoDB, Ruby and Scala @ FOS...
 
Rails for Mobile Devices @ Conferencia Rails 2011
Rails for Mobile Devices @ Conferencia Rails 2011Rails for Mobile Devices @ Conferencia Rails 2011
Rails for Mobile Devices @ Conferencia Rails 2011
 
Boost your productivity!: Productivity tips for rails developers - Lightning ...
Boost your productivity!: Productivity tips for rails developers - Lightning ...Boost your productivity!: Productivity tips for rails developers - Lightning ...
Boost your productivity!: Productivity tips for rails developers - Lightning ...
 
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
 
Curso TDD Ruby on Rails #02: Test Driven Development
Curso TDD  Ruby on Rails #02: Test Driven DevelopmentCurso TDD  Ruby on Rails #02: Test Driven Development
Curso TDD Ruby on Rails #02: Test Driven Development
 
Curso TDD Ruby on Rails #05: Shoulda
Curso TDD Ruby on Rails #05: ShouldaCurso TDD Ruby on Rails #05: Shoulda
Curso TDD Ruby on Rails #05: Shoulda
 
Curso TDD Ruby on Rails #04: Factorías de objetos
Curso TDD Ruby on Rails #04: Factorías de objetosCurso TDD Ruby on Rails #04: Factorías de objetos
Curso TDD Ruby on Rails #04: Factorías de objetos
 
Curso TDD Ruby on Rails #03: Tests unitarios
Curso TDD Ruby on Rails #03: Tests unitariosCurso TDD Ruby on Rails #03: Tests unitarios
Curso TDD Ruby on Rails #03: Tests unitarios
 
Curso TDD Ruby on Rails #02: Test Driven Development
Curso TDD Ruby on Rails #02: Test Driven DevelopmentCurso TDD Ruby on Rails #02: Test Driven Development
Curso TDD Ruby on Rails #02: Test Driven Development
 
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
 
Plugins de autenticación en Rails - Lightning talk Las Palmas On Rails 09/02/...
Plugins de autenticación en Rails - Lightning talk Las Palmas On Rails 09/02/...Plugins de autenticación en Rails - Lightning talk Las Palmas On Rails 09/02/...
Plugins de autenticación en Rails - Lightning talk Las Palmas On Rails 09/02/...
 

Último

Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
Manuel Diaz
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
leia ereni
 
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDADEXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
AngelCristhianMB
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
MiguelAtencio10
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
jgvanessa23
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
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
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
giampierdiaz5
 
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
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
70244530
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
YaniEscobar2
 
La Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docxLa Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docx
luiscohailatenazoa0
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
Paola De la Torre
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
yuberpalma
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
larapalaciosmonzon28
 
Modo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdfModo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdf
ranierglez
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
NicandroMartinez2
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
cecypozos703
 

Último (20)

Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
 
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDADEXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
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
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
 
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
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
 
La Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docxLa Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docx
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
 
Modo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdfModo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdf
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
 

Curso TDD Ruby on Rails #08: Buenas prácticas

  • 1. CURSO DE TESTING OSL 12 – 16 DE ABRIL 2010 Buenas prácticas en el desarrollo de aplicaciones web Alberto Perdomo Web: http://albertoperdomo.net Email: alberto.perdomo@aentos.es Twitter: @albertoperdomo http://www.aentos.com
  • 2. EL CÓDIGO PERDURA No escribas código del que te vayas a sentir avergonzado. Alguien lo va a ver tarde o temprano. http://www.flickr.com/photos/andre5/4408196113/
  • 3. ESCRIBE CÓDIGO LIMPIO Y LEGIBLE Un buen código Ruby no precisa de muchos comentarios http://www.flickr.com/photos/luisbg/2072134438/
  • 4. CONVENCIONES “Sigue las convenciones” Están ahí por algo. No luches contra corriente. http://www.flickr.com/photos/talaakso/3741346743/
  • 5. USA HERRAMIENTAS Hay herramientas, gemas y plugins para casi todo lo que puedas imaginar. Directorio: http://www.ruby-toolbox.com/ http://www.flickr.com/photos/usefulguy/226373498/
  • 6. D on't R epeat Y ourself Introducing... Inherited Resources Imágen: http://www.fickr.com/photos/cowfsh/132547104/
  • 7. DRY: REFACTORIZAR Primero repite, luego refactoriza http://www.flickr.com/photos/vinothchandar/4257167174/
  • 8. Separation of concerns (SoC) → Modularidad → Encapsulamiento → Distribución de responsabilidades
  • 9. THE Fat model & the skinny controller Imágen: http://www.fickr.com/photos/kylemay/553916826/
  • 10. Ley de Demeter: “Habla sólo con tus amigos” Imágen: http://www.fickr.com/photos/desireedelgado/3423389473/
  • 11. #1 NMO*: muy alto #2 NMO*: MEDIO alto NMO*: MEDIO #3 *NMO = NIVEL DE MAL OLOR Código: http://brian.maybeyoureinsane.net/blog/2006/12/15/law-of-demeter-or-how-to-avoid-coding-yourself-into-a-corner-in-rails/
  • 12. DELEGATE, FTW!! AquI HUELE A ROSAS!!!! Código: http://brian.maybeyoureinsane.net/blog/2006/12/15/law-of-demeter-or-how-to-avoid-coding-yourself-into-a-corner-in-rails/
  • 13. TAFT “Test All the F***ing Time” Bryan Liles Video Ruby HoeDown 2008
  • 14. El Zen del Testing “Encuentra el equilibrio” Cada uno tiene su combo. Imágen: http://www.fickr.com/photos/digitalart/2912152377/
  • 15. Sé disciplinado: Practica tu combo Haz TDD “Dar cera, pulir cera” http://www.flickr.com/photos/kevinpoh/3650866967/
  • 16. CÓDIGO / TESTING Comportamiento → Piensa en comportamiento, no en implementación → El código expresa comportamiento → Tu código debe ser una “caja negra” Tests = ejemplos de comportamiento Haz que los tests dirijan tu código → RED → GREEN → REFACTOR
  • 17. EVITA LOS TEST FRÁGILES → se rompen con facilidad → síntomas: cada vez que refactorizas tienes que actualizarlos → prueban detalles de implementación no comportamiento
  • 18. HAZ TESTS CON LO QUE PREFIERAS, PERO HÁZLOS http://www.fickr.com/photos/sebastian_bergmann/2282734669/
  • 20. USA CONTROL DE VERSIONES Distribuídos → Git → el más popular (recomendado) → Darcs → Mercurial →… Centralizados → Subversion → bueno para empezar → CVS → bienvenidos a la prehistoria → Sourcesafe → “si lo usas no me lo digas” → ...
  • 21. CONTROL DE VERSIONES “Piensa en los gatitos” http://www.fickr.com/photos/mathias-erhart/2562106102/
  • 22. AUTOMATIZA Todo tiene que ser reproducible Hacer las cosas a mano no sirve Tu tiempo es oro http://www.fickr.com/photos/macinate/3454346075/
  • 23. AUTOMATÍZAR LOS TEST Integración continua (ejecutar los test en el servidor) Integrity, CruiseControl.rb, Hudson Ejecutar los test en local AutoTest, ZenTest
  • 24. AUTOMATIZAR: SERVIDORES Instalar y confgurar servidores Chef, Puppet, ...
  • 25. AUTOMATIZAR: DESPLIEGUE Despliega la aplicación de forma automática a los server ¡Capistrano!