Score Keeper Kata
La kata Score Keeper es un ejercicio de programación para principiantes diseñado para ayudarte a practicar el Desarrollo Guiado por Pruebas (TDD).
Escenario
Tu tarea es desarrollar un software para un marcador de baloncesto. Los usuarios finales requieren una interfaz simple con seis botones:
- Tres botones para el Equipo A para sumar 1, 2 o 3 puntos.
- Tres botones para el Equipo B para sumar 1, 2 o 3 puntos.
El marcador debe mostrar el puntaje actual en un formato fijo: 000:000, donde el puntaje de cada equipo siempre se representa con tres dígitos.
Tu tarea
Puedes comenzar implementando una clase llamada ScoreKeeper con los siguientes métodos:
- scoreTeamA1()
- scoreTeamA2()
- scoreTeamA3()
- scoreTeamB1()
- scoreTeamB2()
- scoreTeamB3()
- getScore()
Cada método scoreTeamXn() debe incrementar el puntaje del equipo correspondiente en n puntos. El método getScore() debe retornar el puntaje actual en el formato 000:000.
Restricciones
- La visualización del marcador debe tener siempre una longitud de siete caracteres, manteniendo los ceros a la izquierda cuando sea necesario.
- Enfócate en escribir código limpio y mantenible, con una cobertura de pruebas completa.
- Adopta un enfoque TDD de fuera hacia dentro (outside-in): comienza escribiendo pruebas para la interfaz de ScoreKeeper antes de implementar la lógica interna.
Flujo de trabajo TDD sugerido
- Rojo: Escribe una prueba que falle para la funcionalidad inicial (por ejemplo, scoreTeamA1() debería aumentar el puntaje del Equipo A en 1).
- Verde: Implementa el código mínimo necesario para que la prueba pase.
- Refactoriza: Limpia el código asegurándote de que todas las pruebas sigan pasando.
Repite este ciclo para cada método y caso límite (edge case).
Objetivos de aprendizaje
- Practicar el enfoque outside-in del TDD.
- Comprender cómo diseñar una API simple que cumpla con los requisitos del usuario.
- Mejorar habilidades en la escritura de pruebas unitarias claras y efectivas.
- Experimentar la programación en pareja (pair programming) como forma de colaboración.
Enlaces
Comentarios
Sin comentarios
Escribir comentario