klub meteor
Voilà plusieurs fois que des utilisateurs de l’application klub m’informent que leur proposition a disparu.
C’est dommage, car c’est certainement un frein à réessayer plus tard pour proposer un livre intéressant au klub, et probablement une occasion manquée de faire de nouvelles découvertes. Même si l’essentiel est ailleurs que dans l’application, ce qui est certain, c’est que l’expérience globale des klubers et en particulier des nouveaux, est dégradée.
Nous pourrions faire plusieurs hyptohèses, mettre en place des mesures, des stats sur l’accès aux différentes fonctionnalités, mais ma priorité est déjà de voir ce qui ne va pas et de corriger le bug.
- Reproduire le problème
Dans le scénario nominal, tout a l’air de bien fonctionner. Par contre, quand je recharge certaines pages (F5), les listes disparaissent. Le contexte semble perdu. Via l’administration, la liste complète des articles fait apparaître des objets sans type… Bizarre. 2 problèmes :
- l’application autorise l’enregistrement d’objets non typés (probablement à cause de la perte du contexte)
- lorsque des objets sont non typés ou que le contexte est perdu, plus rien ne s’affiche.
- Comment faire en sorte que le problème ne se produise plus ?
Rendre le contexte de page explicite
- Mettre les valeurs du contexte dans l’url
- REST stateless plutôt que Session
Valider les objets avant de les enregistrer
Par précaution, mais c'est quand même indispensable pour ne pas se retrouver avec une base de données bancale.
Conclusion / Conseils
On peut trouver pas mal d’améliorations à faire lorsqu’on plonge dans un code pour un problème donné. Une approche disciplinée évite de s’éparpiller. Aussi après ces 2 premières corrections rapides, il conviendrait de compléter par les tâches suivantes:
-
pour chaque route / chemin d’url de l’application, écrire un test auto qui appele l’url avec et sans valeur de paramètre
-
faire en sorte qu’il n’y ait plus du tout de variables passées en session entre différentes pages, mais privilégier l’URL
-
faire en sorte que les contextes de page soient limités aux strict nécessaire, pour ne pas faire de requêtes en base inutiles
-
rassembler les traitements utiles à l’élaboration des contextes de pages dans des classes du domaine métier en explicitant les intentions dans les noms de méthodes sinon en commentaire.
Voilà le plan des prochaines investigations pour diminuer la dette technique.