Bonjour,
Ah, on reconnait bien là les propos de cet informaticien modeste qui sommeille en chacun de nous : Si je le fais comme ça, c'est que c'est la meilleure façon de le faire !
Hors plaisanterie, je ne pense pas que tous les contrôles fonctionnels se font forcément de la même façon, et en plus ça dépend aussi du type d'application et du type d'architecture.
Contrôler la cohérence fonctionnelle par requête n'est pas très logique pour moi, même si dans le cas présent on recherche dans la base si tel ou tel couple d'informations n'a pas déjà été créer, qu'en pensez-vous ?
En réponse à cette question, je dirais :
Premièrement :
Il y a de nombreux cas où la cohérence fonctionnelle nécessitent des requêtes en base de données, et on a parfois "double peine" à lancer les requêtes de contrôle, puis à faire les insertions/update nécessaires.
Parfois aussi, les accès concurrents entre divers utilisateurs font que le contrôle ne peut se faire que au moment de la transaction BDD .
Deuxièmement :
Si quelque chose risque de corrompre l'intégrité d'une base de donnée et que ceci est traduisible en contrainte d'intégrité de la BDD, alors il faut placer une contrainte d'intégrité
Troisièmement :
Tous ce qui peut être fait comme contrôle avant que l'utilisateur tape "enregistrer" devrait être fait, comme par exemple la cohérence d'un numéro de téléphone, un champs correspondant à une colonne non nulle, un format de date etc ...
Ceci n'empêche pas de mette en plus une contrainte par sécurité, mais c'est beaucoup plus performant et agréable pour l'utilisateur d'être prévenu avant d'une erreur prévisible.
Quatrièmement :
Si des contrôles sont faits à l'aide de contraintes dans la base, la façon dont ils remontent à l'utilisateur doit être très claire : pas du genre un immonde stack trace exception sur 30 ou 40 lignes de code java, ou peut-être pire "une erreur technique s'est produite : contacter l'administrateur !", mais quelque chose du genre :
"L'individu n'a pas d'adresse principale, créez d'abord une adresse"
Voilà quelques réflexions, par contre, malgré une expérience conséquente en conception de systèmes informatiques, je ne prétendrais pas que ces principes sont la seule façon de faire quelque chose de bien !
Cordialement
Partager