• I Code Kata de Agile-CyL

    Día: 29/05/2010
    Hora: 10:00 - 13:30
    Lugar: Sala 24, Centro Cívico Zona Sur, Plaza Juan de Austria - Valladolid
    Objetivo: pasar un buen rato mejorando nuestras técnicas de desarrollo de software, buscando resolver un problema a partir de TDD y Pair Programming.
    NO es necesario encontrar la solución, sino discutir los caminos que nos encontremos buscando mejores soluciones.
    El lenguaje de programación no es importante.
    Requisitos: Quien tenga portátil preparado para desarrollar y con xUnit será bienvenido ( no es una sala de informática, necesitamos equipos)
    Ganas de pasarlo muy bien.
    Procedimiento:
    1. Organizarnos por parejas
    2. Trabajar en base a Pomodoros de 25 minutos, con 5 de descanso y retrospectiva
    3. Cambio de pareja para siguiente pomodoro
    Asistentes:
    1. Jorge Jiménez Pérez
    2. Amalia Hernández García
    3. José Luis Balmaseda Franco
    4. Alvaro Garcia Loaisa
    5. Javier Acero Guerra
    6. Francisco Pascual
    7. Eduardo Ferrández

    KATA: STRING CALCULATOR

    El problema a resolver es el siguiente: se parte de una cadena formada por número que están separados por comas o por nuevas
    líneas (\n). Se trata de ir haciendo la suma de los números recibidos y devolver el valor total.
    Dos cosas a tener en cuenta:

    • Si la primera línea de la cadena es de la forma “//”, entonces es posible encontrar el delimitador *. Esto es válido para cualquier cadena.
    • No se admiten números negativos.

    Esta información está en la página:

    http://blog.extracheese.org/2010/01/string-calculator-kata-in-python.html

    Pero es que además la página de Osherove nos da toda una serie de pasos para ir desarrollando
    la Kata (http://osherove.com/tdd-kata-1)

    1. Crear una calculadora sencilla con un método int Add (números de serie)
      1. El método puede tener 0, 1 ó 2 números, y devolverá su suma (para una cadena vacía devolverá 0) por ejemplo ” ” ó “1″ ó ” 1,2 “
      2. Comience con el caso más simple de prueba de una cadena vacía y luego  pasar a 1 y 2 números
      3. Debes resolver las cosas de la manera mas sencilla posible, para forzarte a escribir los test que no habías pensado
      4. Hay que refactorizar después de pasar los test.
    2. Permitir que el metodo Add trabaje con una cantidad desconocida de números
    3. Permitir que  el método Add trate con el carácter nueva línea, situado entre los números (en lugar de comas).
      1. la siguiente entrada está bien: “1 \ n2, 3″ (será igual a 6)
      2. la siguiente entrada NO se acepta: “1, \ n”
      3. Asegurar la prueba para las entradas correctas. No hay necesidad de probar para las entradas incorrectas.
    4. Permitir el método Add trabaje un delimitador diferente:
      1. Para cambiar un delimitador, el comienzo de la cadena contendrá una línea independiente que tiene este aspecto: ”/ / [delimitador] \ n [números ...]” por ejemplo “/ /; \ n1; 2″ debe devolver tres cuando el delimitadorpor defecto es ‘;’.
      2. La primera línea es opcional. Todos los escenarios deben estar soportados.
    5. Las llamadas al método Add con un número negativo deben lanzar una  excepción “Números negativos no admitidos” - y mostrar  el numero negativo. Si existen múltiples negativos, se muestran todas en el mensaje de excepción.

      Hasta aquí, si eres un novato. Continúa si puede terminar los siguientes pasos  en menos de 30 minutos.


    6. Los números superiores a 1000 deben ser ignorados. La suma 2 + 1001 = 2
    7. Los delimitadores pueden ser de cualquier longitud con el siguiente formato: “/ / [delimitador] \ n”, por ejemplo: “//*** \ n1 *** 2 *** 3 “debe devolver 6
    8. Se pueden permitir  delimitadores múltiples de esta manera: “/ / [delim1] [delim2] \ n”, por ejemplo “//[*][%] \ n1 * 2% 3 “debe devolver 6.
    9. Se pueden tratar delimitadores múltiples con una longitud superior a un char.

    RESUMEN

    El sábado 29 de Mayo de 2010, 7 valientes acudimos a realizar la I Kata del grupo Agile-CyL practicando TDD y Pair Programming ( en algún caso se practicaron trios, pero esa es otra historia), donde pudimos ejercitar nuestras habilidades (skills).
    En las refactorizaciones y en los descansos de los Pomodoros se discutió sobre el diseño que emergía a través del TDD y Edu nos abrió los ojos hacia el destino de la Kata: refactorizar y hacer test sobre los diferentes SUT( Subject Under Test) que aparecían ante nuestros ojos: la calculadora y el separador de números  (Calculator y Splitter, respectivamente).
    Y de prueba unas fotos que atestiguan lo bien que lo pasamos. De las cañas no hya pruebas gráficas pero las gambas estaban muy buenas: foto 1 y foto 2

2 Comments


  1. jacegu dice:

    ¿Alguno os animáis a hacer la kata en Ruby? ^_^

  2. semurat dice:

    Ummm, sería cuestión de probarlo.. a ver si @javisantana lo lee y se anima.

    “No todo el monte es Java”

    :P

Leave a comment