Desarrollo ágil

Prácticas defensivas de programación

jj.github.io/curso-tdd/temas/a-programar

Refinement

Un pull request es una propuesta, no un examen.

✓ TODO

□ ¿Hemos comenzado a organizar el desarrollo en milestones?

Programando para tu yo del futuro

Abraza el cambio, no lo evites

También "O" de SOLID (Open/Closed)

Evitando futuras rupturas

Previendo todos los fallos futuros

Clean code: código limpio

1 responsabilidad también en funciones

Sigue semántica de los tipos de datos

Limpiando Raku

has %!milestones = {};
has Str $!project-name;

submethod BUILD( :$!project-name) {}

method new-milestone( $milestone where $milestone.project-name eq
        $!project-name) {
    %!milestones{$milestone.milestone-id} = $milestone;
}

method milestones() { return %!milestones }

Las excepciones son parte de la aplicación

Y de las historias de usuario

HU6: Iris quiere poder recuperar todos los issues de un milestone. Si no hay ningún issue, se considerará el estado erróneo

Excepciones en Python: en el mismo fichero

class NoIssueException(Exception):
    def __init__(self,*args,**kwargs):
        Exception.__init__(self,"Milestone sin issues")

✓ TODO hito 8

Comenzar implementación defensiva incluyendo excepciones

agil.yaml

excepciones:
    - lib/X/Project/NoSuchIssue.pm6