Design Kata: El problema del supermercado
by Pablo Trinidad • 6 octubre, 2011 • Sin categoría • 2 Comments
El dominio de este problema es algo aparentemente simple: los precios de los productos en los supermercados.
Algunos de los productos de los supermercados tienen precios simples: una lata de tomates cuesta 0,65 €. Otros productos pueden tener precios más complejos. Por ejemplo:
- 3 unidades por un euro (¿cuál es el precio si compro 4 o 5?)
- 1,99 € / kilo (¿así que cuánto cuesta un cuarto de kilo?)
- Compre dos y llévese otro gratis (¿Cuánto cuesta un tercer producto?)
El ejercicio consiste en experimentar con diferentes modelos para representar el dinero y los precios de forma que sean suficientemente flexibles como para representar estos sistemas de precios (yotros) y que puedan usarse en distintos contextos (en caja, para la gestión de stocks, el registro de pedidos, etc.).
Invierte el tiempo sufiente para responder las siguientes cuestiones:
- ¿Qué fracción de moneda mínima se puede representar?
- ¿Cuándo y de qué forma se produce el redondeo? (Si se produce)
- Si se mantiene un registro de ventas, ¿Se debe mantener también un histórico de precios?
- ¿Son el coste y el precio la misma cosa?
- Si un estante de 100 latas tiene una promoción “comprar dos, y llévese otro gratis”, ¿Cuánto vale cada lata?
- ¿Cómo se aplicarían descuentos generales sobre el precio final?
El objetivo de este kata es practicar una manera informal de diseñar. Qué es mejor, ¿Comenzar con un diseño básico y extenderlo poco a poco? ¿Realizar un modelo completo y codificarlo? ¿Diseño primero las pruebas o después de codificar?
Trata de encontrar diferentes formas de dar solución a los aspectos anteriores. Considera los pros y contras de cada solución.
Implementa el diseño elegido en una pequeña aplicación que tenga un catálogo de productos, de ofertas sobre los mismos y que permita calcular el precio de una compra de varios productos. ¿Puedes probar que la implementación es correcta?
Inspirado este Code Kata.
esto es un portfolio ?
Por ahora no, pero podrá serlo.