Recursos programación orientada a objetos-OOP y dobles test

La programación orientada a objetos va a suponer algunas ventajas frente a otras aproximaciones en el desarrollo de software. 

  • Trabajar reutilizando código legacy:  te permite crear una clase genérica y luego definir las subclases que heredarán los rasgos de la misma.
  • Es más fácil de modificar: permite añadir, modificar o eliminar nuevos objetos o funciones de manera sencilla, lo que se traduce en un ahorro de recursos.
  • Es más sencillo detectar errores en el código: No es necesario revisar línea por línea del código para detectar un error, ya que los objetos son autónomos,  y eso facilita mucho las cosas.
  • Trabajar en módulos: trabajar de este modo permite dividir los problemas en partes más pequeñas que se pueden testear una a una.
  • Es más flexible gracias a su polimorfismo: una sola función puede cambiar de forma para adaptarse a cualquier clase donde se encuentre. De nuevo ahorramos recursos y se facilitan las tareas. 

Una vez planteados y reforzados conceptos básicos como condicionales, bucles y estructuras simples, y trabajado el TDD de forma estricta, es momento de añadir complejidad y empezar con la OOP al igual que otros conceptos del testing como dobles de test y diferentes estilos de TDD. Veamos algunos recursos con los que vas a poder profundizar: 

Charlas y videos

Discutiendo sobre Cohesión y Acoplamiento
Autores: Carlos Blé para Lean mind. 
Tags: Principios de diseño de software. 

Taller práctico y basado en ejercicios mostrando código e ideas y en base a ese código hacer un brainstorming para resolver el escenario que se plantea. Es una sesión muy colaborativa y dinámica basada en esta temática. 

Diseño de software en zapatillas
Autor: Fran Iglesias en la Software Crafters Málaga
Tags: Clean code, principios de diseño de software. 

Playlist en la que su autor te muestra una serie de principios, patrones y prácticas básicos y útiles para desarrollar software de forma sostenible. Cuatro videos en total con los que vas a poder iniciarte con fundamento en estas prácticas. 

Law of Demeter
Autora; Emily Bache
Tags: Principios de diseño de software

En este workshop de algo más de una hora se propone una discusión en equipo sobre los buenos principios de diseño de software y, en particular, sobre el acoplamiento. El vídeo incluye una demostración de refactorización en la que se soluciona un problema de acoplamiento para acabar con un código que sigue la Ley de Demeter. 

Refactor con calisthenics
Autor: Fran Iglesias
Tags: TDD, OOP, Object calisthenics. 

Playlist muy completa en la que podrás desarrollar sus habilidades diseñando software a través de restricciones. Una forma práctica y muy útil de entrenar y mejorar tu práctica. 

 Does TDD Really Lead to Good Design?
Autor: Sandro Mancuso
Tags: inside-out, outside-in

En esta charla Sandro Mancuso explicara los pros y los contras de los dos estilos principales de TDD cuando se trata de diseño de software, y argumenta por qué algunos desarrolladores pueden testear código bien diseñado mientras que otros no, mientras nos cuenta cómo razonar sobre las decisiones de diseño.

Testing tips
Autor: Fran Iglesias
Tags: PHP, TDD

Playlist con un par de videos para mejorar tus habilidades de testing. 

Libros 


📖 Testing y TDD para PHP
Autor: Fran Iglesias
Tags: TDD, PHP, testing doubles

Libro en el que vas a encontrar las técnicas, patrones y anti patrones para hacer más eficientes tus tests con dobles

Growing Object-Oriented Software, Guided by Tests
Autores: Steve freeman and Nat Pryce foreword by Kent beck
Tags: Agile, XP, OOP, TDD

En esta obra se describen los procesos, principios de diseño y algunas de las herramientas que resultan más útiles. Usando ejemplos como guía aprenderás cómo funciona TDD en múltiples niveles, usando test para controlar las características y la estructura orientada a objetos del código, y usando objetos simulados para descubrir y luego describir relaciones entre objetos.

 ATDD by Example A Practical Guide to Acceptance Test-Driven Development
Autor: Markus Gärtner
Tags: XP, TDD, ATDD

Si eres tester, analista, desarrollador o director de proyectos, este libro te ofrece una base completa con la que podrás conseguir beneficios reales con ATDD y te ayudará a obtener aún más valor a medida que profundices y adquieras más experiencia.


 The BDD books discovery Explore behaviour using examples
Autores: Gáspár Nagy & Seb Rose
Tags: BDD, discovery

En este libro encontramos las claves sobre cómo aprovechar al máximo la fase de descubrimiento del desarrollo impulsado por el comportamiento (BDD).

The BDD Books - Formulation Document examples with Given/When/Then
Autores: Gáspár Nagy & Seb Rose
Tags: BDD, formulations

Este libro proporciona información muy interesante sobre cómo aprovechar al máximo la fase de formulación del desarrollo impulsado por el comportamiento (BDD).

CRC Cards (entiende las responsabilidades de las clases que haces)

Las tarjetas CRC (Class Responsibility Collaborator) es una actividad de modelado orientado a objetos en la cual el equipo puede manifestar y debatir ideas acerca del diseño de un sistema. Hace especial énfasis en la simplicidad, comunicación y límites de un sistema. Se suele utilizar en las primeras fases del desarrollo de una historia como paso previo a la implementación o escritura de un esquema UML. Esta herramienta fue creada por Ward Cunningham and Kent Beck.

New call-to-action