question à propos de la validation d'un formulaire

question à propos de la validation d'un formulaire - Javascript/Node.js - Programmation

Marsh Posté le 28-02-2023 à 10:17:08    

Bonjour,
 
je suis entrain de suivre une formation typescript en ligne et je ne comprends pas le choix du formateur concernant une expression booleenne.
 
 

Code :
  1. function validate(validatableInput: Validatable) {
  2.   let isValid = true;
  3.   if (validatableInput.required) {
  4.     isValid = isValid && validatableInput.value.toString().trim().length !== 0;
  5.   }
  6.   if (
  7.     validatableInput.minLength != null &&
  8.     typeof validatableInput.value === "string"
  9.   ) {
  10.     isValid =
  11.       isValid && validatableInput.value.length >= validatableInput.minLength;
  12.   }
  13.   if (
  14.     validatableInput.maxLength != null &&
  15.     typeof validatableInput.value === "string"
  16.   ) {
  17.     isValid =
  18.       isValid && validatableInput.value.length <= validatableInput.maxLength;
  19.   }
  20.   if (
  21.     validatableInput.min != null &&
  22.     typeof validatableInput.value === "number"
  23.   ) {
  24.     isValid = isValid && validatableInput.value >= validatableInput.min;
  25.   }
  26.   if (
  27.     validatableInput.max != null &&
  28.     typeof validatableInput.value === "number"
  29.   ) {
  30.     isValid = isValid && validatableInput.value <= validatableInput.max;
  31.   }
  32.   return isValid;
  33. }


 
Moi inuitivement j'aurais fait tout simplement ca:
 

Code :
  1. function validate(validatableInput: Validatable) {
  2.   let isValid = true;
  3.   if (validatableInput.required) {
  4.     isValid = validatableInput.value.toString().trim().length !== 0;
  5.   }
  6.   if (
  7.     validatableInput.minLength != null &&
  8.     typeof validatableInput.value === "string"
  9.   ) {
  10.     isValid = validatableInput.value.length >= validatableInput.minLength;
  11.   }
  12.   if (
  13.     validatableInput.maxLength != null &&
  14.     typeof validatableInput.value === "string"
  15.   ) {
  16.     isValid =validatableInput.value.length <= validatableInput.maxLength;
  17.   }
  18.   if (
  19.     validatableInput.min != null &&
  20.     typeof validatableInput.value === "number"
  21.   ) {
  22.     isValid = validatableInput.value >= validatableInput.min;
  23.   }
  24.   if (
  25.     validatableInput.max != null &&
  26.     typeof validatableInput.value === "number"
  27.   ) {
  28.     isValid = validatableInput.value <= validatableInput.max;
  29.   }
  30.   return isValid;
  31. }


 
Du coup j'aimerais savoir l'interet de l'approche du formateur.  :heink:  
 
Une idée ?


---------------
collectionneur de pâtes thermiques
Reply

Marsh Posté le 28-02-2023 à 10:17:08   

Reply

Marsh Posté le 02-03-2023 à 09:31:35    

Je ne vois pas de différence entre ce que t'as mis pour le formateur et ta vision des choses :/
 
Edit : ah oui, j'avais pas vu le isValid &&  :sleep:


Message édité par rufo le 02-03-2023 à 13:26:58

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 02-03-2023 à 10:24:20    

tompouss a écrit :

Bonjour,
 
je suis entrain de suivre une formation typescript en ligne et je ne comprends pas le choix du formateur concernant une expression booleenne.
 
 

Code :
  1. function validate(validatableInput: Validatable) {
  2.   let isValid = true;
  3.   if (validatableInput.required) {
  4.     isValid = isValid && validatableInput.value.toString().trim().length !== 0;
  5.   }
  6.   if (
  7.     validatableInput.minLength != null &&
  8.     typeof validatableInput.value === "string"
  9.   ) {
  10.     isValid =
  11.       isValid && validatableInput.value.length >= validatableInput.minLength;
  12.   }
  13.   if (
  14.     validatableInput.maxLength != null &&
  15.     typeof validatableInput.value === "string"
  16.   ) {
  17.     isValid =
  18.       isValid && validatableInput.value.length <= validatableInput.maxLength;
  19.   }
  20.   if (
  21.     validatableInput.min != null &&
  22.     typeof validatableInput.value === "number"
  23.   ) {
  24.     isValid = isValid && validatableInput.value >= validatableInput.min;
  25.   }
  26.   if (
  27.     validatableInput.max != null &&
  28.     typeof validatableInput.value === "number"
  29.   ) {
  30.     isValid = isValid && validatableInput.value <= validatableInput.max;
  31.   }
  32.   return isValid;
  33. }


 
Moi inuitivement j'aurais fait tout simplement ca:
 

Code :
  1. function validate(validatableInput: Validatable) {
  2.   let isValid = true;
  3.   if (validatableInput.required) {
  4.     isValid = validatableInput.value.toString().trim().length !== 0;
  5.   }
  6.   if (
  7.     validatableInput.minLength != null &&
  8.     typeof validatableInput.value === "string"
  9.   ) {
  10.     isValid = validatableInput.value.length >= validatableInput.minLength;
  11.   }
  12.   if (
  13.     validatableInput.maxLength != null &&
  14.     typeof validatableInput.value === "string"
  15.   ) {
  16.     isValid =validatableInput.value.length <= validatableInput.maxLength;
  17.   }
  18.   if (
  19.     validatableInput.min != null &&
  20.     typeof validatableInput.value === "number"
  21.   ) {
  22.     isValid = validatableInput.value >= validatableInput.min;
  23.   }
  24.   if (
  25.     validatableInput.max != null &&
  26.     typeof validatableInput.value === "number"
  27.   ) {
  28.     isValid = validatableInput.value <= validatableInput.max;
  29.   }
  30.   return isValid;
  31. }


 
Du coup j'aimerais savoir l'interet de l'approche du formateur.  :heink:  
 
Une idée ?


 
À la fin de ta fonction isValid sera égal au dernier if dans lequel il sera passé. Si tous tes tests renvoient false, mais le dernier true ton isValid vaudra true.
Celui du formateur opère un et logique entre le true défini à l'init de isValid et le retour de chaque test joué dans chacun des if et donc à partir du moment où y'a un false dans les tests, isValid sera à false au final.


---------------
There's more to life than the boy in that mirror.
Reply

Marsh Posté le 02-03-2023 à 11:55:18    

+1
 
Perso j'aurais mis le isValid dans le if plutôt qu'avec un && dans l'affectation, je trouves ça plus lisible et évite un test non nécessaire, mais chacun voit midi à sa porte...
 
Y'a aussi l'option de mettre un return false à chaque test, plutôt que continuer une série de test qui de toute façon devra renvoyer false à la fin.


---------------
D3
Reply

Marsh Posté le 02-03-2023 à 12:34:06    

Merci pour vos réponses :)
j'aime bien savoir le pq d'un choix, c'est important surtout s'il ya une raison précise.
 
Mais je me suis rendu compte que la question avait déjà été posée dans la rubrique  question & réponse de la formation, mais j'ai pas encore l'habitude de cette plateforme.
 
J'aime bien l'idée de @mechkrut de retourner false à chaque test, ce serait à priori plus lisible, donc je vais tester ca


---------------
collectionneur de pâtes thermiques
Reply

Marsh Posté le 02-03-2023 à 21:02:21    

Moi pour ce genre de tests je préfère avoir un truc dégueulasse qui effectue tous les tests et retiens le résultat de chaque test. Car typiquement c'est la saisie d'un mot de passe où tu tentes une fois, ça ne va pas, tu corriges, tu passes le premier test, ça ne va toujours pas car cette fois tu ne passes pas le second test, etc.
Très pénible, même si normalement en affichant un message d'erreur rappelant tous les tests qui seront effectués pallie souvent d'une manière simple au problème.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed