¡Te damos la bienvenida al equipo de ingeniería de Gilded Rose! Como sabes, somos una posada que compra y vende solo los mejores productos. Nuestros productos se degradan constantemente en «quality» a medida que se acercan a su fecha de venta, así que tenemos un sistema de inventario que lleva un registro de estos datos.
Necesitamos que agregues una nueva funcionalidad a nuestro sistema para poder empezar a vender una nueva categoría de artículos. Sin embargo, el código es un desastre y será difícil agregar la nueva funcionalidad a menos que primero refactorices el código existente.
Así que tu tarea tiene dos partes: refactorizar el sistema de inventario y luego agregar la nueva funcionalidad.
Estos son los aspectos básicos de nuestro sistema:
Bastante simple, ¿no? Pues aquí es donde se pone interesante:
Para preparar el camino a la nueva funcionalidad, refactoriza el código existente y hazlo más fácil de cambiar.
Puedes hacer todos los cambios que quieras y agregar el código nuevo que necesites, siempre que todo siga funcionando correctamente (es decir, siempre que sigan pasando las pruebas de las funcionalidades existentes).
Nota: puedes asumir que los artículos siempre empiezan con una «quality» válida. En otras palabras, las pruebas automatizadas no verifican qué pasa cuando un artículo tiene una «quality» inicial por encima del máximo, ni cuando un Sulfuras tiene una «quality» inicial distinta de 80.
Hace poco firmamos un contrato con un proveedor de artículos Conjured. Tu trabajo es agregar las siguientes reglas a nuestro sistema:
Regístrate en Exercism para aprender y dominar Ruby con 21 conceptos121 ejercicios y mentoría humana real, todo gratis.