Skip to content

Instantly share code, notes, and snippets.

@levhita
Last active February 22, 2024 14:33
Show Gist options
  • Save levhita/a2c807629fad83a2ad35be43bf1ad82f to your computer and use it in GitHub Desktop.
Save levhita/a2c807629fad83a2ad35be43bf1ad82f to your computer and use it in GitHub Desktop.
Apuntes de TDD

Conceptos clave:

  • Diseño bajo contrato.

  • Unix Philosophy

    • Write programs that do one thing and do it well.
    • Write programs to work together.
    • Write programs to handle text streams, because that is a universal interface.
     cat source.txt | tr ' ' '\n' | grep '\S'| sort |  uniq -c |sort -nr
    
  • Functional Programming

    • Codigo desacoplado.
    • Recibe una entrada y retorna una salida predecible.
  • Piensa en las pruebas como una Red de Seguridad para tus cambios futuros.

Proceso

  1. Add Test Esto define el contrato de que es lo que se espera de este código y como deseas usarlo.

  2. Run all tests and see if the new test fails La prueba debe de fallar primero, pues no tienes la solución programa, con esta corrida de prueba válidas que el flujo funciona.

  3. Write the code Escribe el código que resuelva tentativamente la prueba

  4. Run tests Corre la prueba, si la pasa sigue adelante, si no, corrige hasta que pase la prueba.

  5. Refactor code Conforme la base de código crece, limpia la estructura de tu código, hazlo sin miedo las pruebas te diran si tocaste algo que no debías.

  6. Repeat

Es una extensión de la metodología que utiliza herramientas especializadas (forzosamente) a través de Lenguajes de dominio especifico (DSL)

Ejemplos de DSL:

$primary-color: #34F;
$gutter: 1em;

.btn {
    border-radius: 1em;
    padding: $gutter;
}

.btn.primary {
    background-color: $primary-color; 
}
REPEAT 8 [ REPEAT 8 [ FD 50 RT 45 ] RT 45 ]
var ex, ey;
ex = instance_nearest(x, y, enemy).x;
ey = instance_nearest(x, y, enemy).y;
with (instance_create(x, y, obj_Missile))
   {
   direction = point_direction(x, y, ex, ey);
   }

Veamos la wikipedia para un ejemplo: Behavior Driven Development: Specialized Tooling Support.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment