Coding Dojo de Refactoring. Gilded Rose Kata.

Este es un evento antiguo

20 personas asistieron

Imagen del lugar del evento

Detalles

¡Importante! Cómo llegar.
La ubicación correcta es esta: https://www.google.es/maps/place/Dicampus/@43.5258233,-5.6233903,18z/data=!4m5!3m4!1s0x0:0xfc8c6ba67b91389d!8m2!3d43.5256921!4d-5.6236079

Hay transporte público hasta muy cerca, varias líneas de autobuses pasan por delante. Los que vengan en coche, las plazas están etiquetadas con el nombre de la empresa. A esa hora la gente ya está marchando y habrá plazas libres de todas las empresas. No obstante, por favor, utilizad solamente las etiquetadas como Talento.

En nuestro proceso de aprendizaje ahora le estamos dando al libro de Refactoring de Martin Fowler(3). Queremos compartir con vosotros lo aprendido hasta ahora, que no es mucho. :-)

Al principio del dojo, explicaremos los malos olores (bad smells) que puede despedir nuestro código y las técnicas para eliminarlos.
Si queréis leer más sobre el tema, tenéis enlaces a artículos siguiendo el => (4).

Trabajaremos sobre la Gilded Rose Kata(1). El problema clásico, dónde el objetivo no es hacer código nuevo, si no refactorizar uno muy feo existente, teniendo los tests en rojo lo menos posible.

Para no perder tiempo haciendo la cobertura de tests (¡es una kata de refactoring!) y no hacer refactoring a lo loco, vamos a utilizar la kata con los tests integrados.

Al final somos tantos, que vamos a hacerla en pequeños grupos. Aunque en la descripción poníamos que no hace falta traer nada, el que quiera puede traer preparado el entorno.

1. Bajarse el repo de https://github.com/iquesada/GildedRose-Refactoring-Kata
2. Elegir el lenguaje en el que lo vamos a hacer. Por ejemplo Javascript
3. Tener un compilador o intérprete del lenguaje asociado.
4. Git
5. Usar la cobertura de test que trae la kata, basados en la salida de texto del código.Tenéis más info de esto en https://github.com/emilybache/GildedRose-Refactoring-Kata/tree/master/texttests

La idea básica de estos test es comparar la salida generada por nuestro código refactorizado con la salida aprobada del código legacy. Para poder comparar estos ficheros de salida, podemos utilizar http://texttest.sourceforge.net/, o simplemente un diff. Recomendamos esta segunda opción por ser la más sencilla.

Si os fijáis en el fichero config.gr, hay ejemplos de cómo ejecutar esto.El fichero stdout.gr, tiene la salida esperada, por lo que si rompemos algo nuestra salida será diferente a esta.

El repo original no traía opción de node, se lo hemos añadido en el repo que os he compartido para poder realizar la kata en Javascript.

$ cd ./GildedRose-Refactoring-Kata/js
$ node texttest_fixture.js | diff - original_stdout.txt (aportado por Diego Guerra, gracias!)
$ diff refactoring_stdout.txt original_stdout.txt

Si no hay diferencias todo ok, si las hay, es que ha habido cambios en el último refactor.
6. Si ha ido todo bien: commit! :D

¡Nos vemos!

(1) http://codingdojo.org/kata/GildedRose/
(2) http://codingdojo.org/RandoriKata/
(3) https://refactoring.com/
(4) https://martinfowler.com/tags/refactoring.html
(5) https://github.com/iquesada/GildedRose-Refactoring-Kata