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] y [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 3: Aplicació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 3: Aplicació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 3: Aplicació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 3: Aplicació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