Quel nom de variable descriptive puis-je utiliser ici?
-
11-07-2019 - |
Question
Je crée une balise Java Struts personnalisée permettant de créer et de formater une zone de sélection html de manière normalisée (élément de nos consignes d'utilisation).
Chaque boîte de sélection a une valeur supplémentaire / initiale qui décrit l'exigence de la valeur renvoyée par l'élément de sélection, c'est-à-dire:
- Obligatoire - avec le libellé "Veuillez sélectionner".
- Facultatif - "Aucune sélection" "
- Tout sélectionner - " Tout sélectionner "
La balise personnalisée aura une propriété qui contrôle laquelle de celles-ci doit être utilisée.
Le problème est donc que je dois penser à un nom de variable qui puisse expliquer de manière adéquate qu'il contient l'une de ces trois valeurs!
Dans tous les cas, je commenterai le code, mais je préférerais que mes collègues ne soient pas obligés de rechercher le code source pour se rappeler l'objectif de la variable de balise.
Modifier: Pour mettre en contexte ce problème, la stratégie de convivialité que je suis en train de mettre en œuvre est la suivante: si plus de 5 éléments peuvent être sélectionnés, les options doivent apparaître en tant que sélection. boîte. 5 éléments ou moins apparaissent sous forme de boutons radio.
Lorsque des boutons radio sont utilisés, l'étiquette obligatoire ne sera pas affichée (la validation du formulaire se plaindra s'il n'y a pas de valeur sélectionnée de toute façon).
La solution
REMARQUE: voir EDITER ci-dessous pour une approche différente de celle indiquée ici
Qu'en est-il de requireConstraint
?
<my:customSelect requirementConstraint="Mandatory">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</my:customSelect>
Une autre possibilité est de ne pas indiquer trois fois la valeur. Par exemple, vous pouvez plutôt fournir deux propriétés distinctes: required
( "oui" | "" non "
) et selectAll
( "oui" | "non"
) pour clarifier l'intention.
MODIFIER : en fait, je peux voir comment un État à trois états pourrait toujours être utile, si je comprends correctement vos besoins. Une autre possibilité serait d'appeler la propriété mustSelect
et de rendre les valeurs autorisées un
(obligatoire), quelconque
(facultatif) et tous
(tout sélectionner). De plus, depuis " Tout sélectionner " Si cela est une possibilité, je suppose que votre balise customSelect
affiche chaque option sous forme de case à cocher. Voici un exemple d'utilisation de mustSelect
:
Obligatoire (au moins un)
<my:customSelect mustSelect="one">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</my:customSelect>
Facultatif (zéro ou plus)
<my:customSelect mustSelect="any">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</my:customSelect>
Tout sélectionner
<my:customSelect mustSelect="all">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</my:customSelect>
Autres conseils
"multiplicité" semblerait être le bon nom.
On dirait que vous décrivez les valeurs suivantes:
Obligatoire: 1 Facultatif: 0+ Sélectionner tout: n
C'est une question intéressante. Je dois avoir rencontré cette situation plusieurs fois auparavant, mais je n'y ai jamais vraiment pensé.
Votre problème est que votre langage de programmation prend en charge les options bidirectionnelles (par exemple zéro-ou-un) bien meilleures que les options à trois voies (zéro-un-ou-plusieurs). Le raccourci qui se pose "naturellement" est généralement le raccourci qui provient du langage de programmation, il n’existe donc pas de "naturel". raccourci pour les options à trois voies.
Dans l’esprit de KISS *, je suggère que vous ajoutiez " ZeroOneOrMany " au nom de la propriété.
[*] Keep It Simple, Stupid!
optionnel
Obligatoire / Facultatif semble être un booléen, qu'il s'agisse d'un champ facultatif.
Tout sélectionner semble presque sans lien et pourrait être sa propre propriété.