Elm : Making impossible states impossible
-
Upload
nicolas-umiastowski -
Category
Software
-
view
120 -
download
1
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 ?