Quelques pistes de réflexion #
Nous avons proposé, pour notre gestionnaire de réservations/ressources, deux classes représentant une réservation:
Reservation
pour une réservation d’un ensemble de ressources qui a été planifiéPendingReservation
pour la préparation d’une réservation d’un ensemble de ressources qui n’est pas encore planifié
Si ce n’était pas le cas, une réservation pourrait avoir des états différents (planifié ou non planifié), ce qui nous obligerait à fournir davantage de fonctionnalités pour connaître le contexte. Il deviendrait nécessaire de faire des vérifications à l’exécution avant certaines actions et il deviendrait plus difficile à tester ce type d’objets. Quelques exemples de situations embêtantes:
- pour savoir si deux réservations sont en conflit, elles doivent être planifiées toutes les deux
- pour sauvegarder une réservation, elle devrait également être planifiée
- il ne devrait pas être possible d’ajouter une date/heure à une réservation uniquement si elle n’est pas planifiée
- il devrait être possible de modifier la date/heure d’une réservation uniquement si elle a déjà été planifiée
- …
Exemples de la sauvegarde d’une réservation ou d’une modification:
|
|
|
|
L’avantage de séparer ses deux états et de permettre de vérifier ce genre de contexte à la compilation et non à l’exécution. Le code se simplifie, sa compréhension aussi, mais également les tests unitaires pour vérifier ses règles deviennent inutiles.
Version Reservation
et PendingReservation
#
Cette version améliore donc la compréhension, réduit les états possibles ainsi que les cas d’utilisation à vérifier/tester.
|
|
|
|