Elm : Making impossible states impossible

Post on 07-Jan-2017

120 views 1 download

Transcript of Elm : Making impossible states impossible

Elm et les états impossibles

Mon Model sur-mesure

Nicolas Umiastowski@n_umiastowski

Mercredi 10 novembre 2016

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

13

2

1

0

Update

Questions répondues

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

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

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

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

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

Approche « Impossible state »

J’affiche une seule liste de questions

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

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

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

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

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

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

2ème tentative de MISI

Modifier une réponse

Donner une réponse

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

Alors on affiche le message correspondant

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

MISI

1/ Type2/ Debug

3/ TU

Test unitaire

Elm-Test

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 !

Questions ?