Katas Intermedias en Programación Orientada a Objetos (OOP)

Si en vez de leer prefieres escuchar, dale al play.

Katas Intermedias en Programación Orientada a Objetos (OOP)
4:23

Una vez que hayas empezado a utilizar el Desarrollo Guiado por Pruebas (TDD) y profundizado en conceptos básicos como condicionales, bucles y estructuras simples, es hora de añadir complejidad a tu práctica. Refuerza tus conocimientos de programación orientada a objetos (OOP), así como otros conceptos de testing, como los dobles de test y distintos estilos de TDD, y cómo enfrentar problemas con estos enfoques.

Lista de Katas Intermedias en OOP

Text Processing

En esta kata se enseña el concepto de DTO, enfocándose en no acoplarse a la salida por pantalla sino a la información realmente importante. Se trabaja de manera iterativa e incremental. NO te centres en la representación gráfica.

Bags

Kata para trabajar estructuras de datos, OOP y polimorfismo.

PrintDate

Esta kata se centra en los colaboradores, los dobles de test y la teoría de qué tipo de doble sería un [Command] y qué tipo de doble sería un [Query].

  • Iteración 1: Utilización de dobles de test y comprensión del Don’t Mock What You Don’t Own” - Opcional, usa CRC cards.
  • Iteración 2: Crear tus propios dobles de test.

Tic Tac Toe

Kata diseñada para aprender 2 enfoques importantes:

  • Iteración 1: TDD inside-out, viendo cómo evolucionan los test y trabajando la separación [Commands] [Queries].
  • Iteración 2: TDD outside-in sin acoplarse a la representación gráfica, esta parte se trabajará en la Bank kata (aunque si alguien termina pronto puede intentar ver como poder implementarlo).
  • Iteración 3Aplicación de object calisthenic y utiliza mutant testing para crear tests más fuertes.

Smart Fridge

Esta kata se centra en la gestión de colaboradores y el uso de dobles de test, permitiendo practicar tanto TDD inside-out como outside-in.

  • Iteración 1: TDD inside-out (introducción a colaboradores).
  • Iteración 2: TDD outside-in (test de contrato con dobles de test).
  • Iteración 3Aplicación de object calisthenic

Guess the Random Number

Kata para aprender 3 enfoques:

  • Iteración 1: TDD inside-out (introducción a colaboradores).
  • Iteración 2: TDD outside-in (test de contrato con dobles de test).
  • Iteración 3: TDD outside-in con contrato y y creación de colaboradores haciendo TDD (double loop con ATDD).

ATM Machine

Kata iterativa incremental con estado, abordable desde inside-out o outside-in.

  • Iteración 1: Elige el estilo que crees que debes trabajar más.
  • Iteración 2: Trabaja con el estilo con el que te sientas más cómodo.
  • Iteración 3Aplicación de object calisthenic

Shopping Cart

Kata iterativa incremental que tiene estado y que puede ser afrontada desde inside-out o outside-in

  • Iteración 1: Elige el estilo que crees que debes trabajar más - Opcional, usa CRC cards.
  • Iteración 2: Trabaja con el estilo con el que te sientas más cómodo.
  • Iteración 3Aplicación de object calisthenic

Bank

Kata diseñada para trabajarla con outside-in y utilizando ATDD.

  • Iteración 1: TDD outside-in
  • Iteración 2: BDD con Gherkin o Cucumber.

Salary Slip Kata

Kata diseñada para trabajar con OOP y con BDD

  • Iteración 1: Trabaja outside-in utilizando ATDD.
  • Iteración 2: Trabaja el inside-out.
  • Iteración 3: Trabaja el BDD, aprende qué es BDD, cómo sería una feature correcta y haz el setup para el lenguaje que necesites.

Conway's Game of Life

Esta kata es ideal para practicar el uso de colaboradores y dobles de test, aplicando tanto TDD inside-out como outside-in.

  • Iteración 1: TDD inside-out (introducción a colaboradores).
  • Iteración 2: TDD outside-in (test de contrato con dobles de test).

Consejos para mejorar en OOP y TDD

  • Aprende a pivotar entre inside-out y outside-in según lo necesites.
  • Piensa en la capa de la pirámide de tests desde la que deberías comenzar, dependiendo de lo que intentes implementar.

Aprendizajes

  • Piramide de test
  • Trabajo con colaboradores
  • Principios de diseño de software
  • Estrategias de testing, incluyendo dobles de test:
  • DTO y Value Objects
  • Evita trabajar con primitivos
  • Ley de Demeter
  • Inside-out y Outside-in
  • BDD y ATDD
  • Uso de mutant testing para evaluar la fuerza de tus tests
  • YAGNI y DRY : Relaciona esto con la ley de las 3 repeticiones

New call-to-action