Application
Assembler les sept briques en un tout cohérent.
Application complète
Savoir écrire un contrôleur, un dépôt, un formulaire et une règle de sécurité ne suffit pas à savoir écrire une application. Les briques prises séparément sont simples ; c'est leur assemblage qui produit les difficultés, parce qu'il fait apparaître des questions qu'aucune leçon isolée ne pose.
Où mettre la règle « on ne peut pas emprunter un ouvrage dont tous les exemplaires sont sortis » ? Dans l'entité, qui connaît ses exemplaires mais pas les emprunts en cours des autres ? Dans le service, qui voit tout mais mélange alors deux préoccupations ? Dans le contrôleur, qui n'a rien à y faire ? Le choix a des conséquences durables : mal placée, cette règle sera contournée le jour où l'API fera la même opération sans passer par le même chemin.
Autre question qui n'apparaît qu'à l'assemblage : une opération qui touche deux entités — décrémenter la disponibilité et créer l'emprunt — doit réussir ou échouer en bloc. Si la frontière transactionnelle est au mauvais endroit, l'application produira occasionnellement des états incohérents que personne ne saura reproduire.
Cette dernière leçon construit donc une fonctionnalité complète — l'emprunt d'un ouvrage — en traversant toutes les couches, et en justifiant chaque placement. Elle ajoute ensuite le traitement des erreurs côté pages, l'internationalisation des messages, et les tests d'intégration qui vérifient l'ensemble plutôt que les morceaux.
Commentaires
Les commentaires sont alimentés par GitHub Discussions
Connectez-vous avec GitHub pour participer à la discussion