Elm : Making impossible states impossible

30
Elm et les états impossibles Mon Model sur-mesure Nicolas Umiastowski @n_umiastowski Mercredi 10 novembre 2016

Transcript of Elm : Making impossible states impossible

Page 1: Elm : Making impossible states impossible

Elm et les états impossibles

Mon Model sur-mesure

Nicolas Umiastowski@n_umiastowski

Mercredi 10 novembre 2016

Page 2: Elm : Making impossible states impossible

Approche initiale

Encoding the answered state of a question in the constructor does mean that you can’t write code that doesn’t check for whether a question is answered or not

Page 3: Elm : Making impossible states impossible

13

2

1

0

Page 4: Elm : Making impossible states impossible

Update

Page 5: Elm : Making impossible states impossible

Questions répondues

Est-ce que ce sont vraiment des questions répondues ?

Page 6: Elm : Making impossible states impossible
Page 7: Elm : Making impossible states impossible

Je peux tester le message qui s’affiche si au moins une

question ne possède pas de answerId

Je veux pouvoir m’assurer que :

si une question est répondue, alors elle a un answerId

Question répondue qui n’a pas de answerId : Possible

Elm- test

Page 8: Elm : Making impossible states impossible

Making impossible states impossible :

Le Model est défini de telle sorte que le compilateur renvoie une erreur si un état

impossible peut se produire

Page 9: Elm : Making impossible states impossible

1ère tentative de MISIEtape 1 : définir le Model

Page 10: Elm : Making impossible states impossible

Distinguer questions répondues et questions non répondues.

Page 11: Elm : Making impossible states impossible

Approche « Impossible state »

J’affiche une seule liste de questions

Je vérifie qu’il n y a aucune question « restante »

Page 12: Elm : Making impossible states impossible

1ère tentative de MISIEtape 2 : vérifier le Model

Page 13: Elm : Making impossible states impossible

Je peux avoir des questions « répondues » sans réponse

Page 14: Elm : Making impossible states impossible

Ou une même question dans les 2 listes !!

Page 15: Elm : Making impossible states impossible

2 questions avec le même Id mais intitulés différents

Page 16: Elm : Making impossible states impossible

Nombre de questions répondues > Total de questions Impossible

On peut valider qu’une question existante possède un answerId ou pas, mais on ne peut checker qu’elle a un état “répondu” ou “non répondu”.

Elm-test

Page 17: Elm : Making impossible states impossible

2ème tentative de MISI

Page 18: Elm : Making impossible states impossible
Page 19: Elm : Making impossible states impossible
Page 20: Elm : Making impossible states impossible

Modifier une réponse

Donner une réponse

Page 21: Elm : Making impossible states impossible

S’il n’y a que des questions répondues…

Alors on affiche le message correspondant

Page 22: Elm : Making impossible states impossible
Page 23: Elm : Making impossible states impossible

Nombre de questions répondues > Total de questions Impossible

Toutes les questions existantes sont soit répondues soit non répondues, avec un état correct

Elm-test

Page 24: Elm : Making impossible states impossible
Page 25: Elm : Making impossible states impossible
Page 26: Elm : Making impossible states impossible
Page 27: Elm : Making impossible states impossible

MISI

1/ Type2/ Debug

3/ TU

Page 28: Elm : Making impossible states impossible

Test unitaire

Elm-Test

Page 29: Elm : Making impossible states impossible

ConclusionToujours refactoriserAppliquer les bons patterns permet de progresserOn apprend en faisantAu début, on prend plus de tempsMais ensuite on est beaucoup plus rapide, et on évite les bugs !

Page 30: Elm : Making impossible states impossible

Questions ?