8
votes

Isenabled ou activé?

Tout au long de Silverlight et WPF, les propriétés qui sont des valeurs booléennes sont préfixées avec est ( presque tous ), par exemple:

  • isenabled
  • istabstop
  • ishittestvisible

    Dans tous les autres frameworks Microsoft (Winforms, BCL, ASP.NET) est n'est pas utilisé. Ce qui a incité à leur équipe à s'éloigner de la convention de dénomination d'origine - est-ce une évolution ou un nommage qui devait coller?


3 Réponses :


3
votes

Le est préfixe peut donner un indice sur le fait que la propriété n'a qu'un obtenir accessor et, comme dit Thomas et Rachel, c'est un bool. Ignorer le préfixe si vous souhaitez mettre en œuvre les deux obtenir et définir les accesseurs et son type est autre que BOOL.


3 commentaires

Je suis en désaccord, je sais que j'ai défini isenabled sur certains objets avant. C'est probablement parce que c'est une valeur booléenne et non quelque chose que vous pouvez définir à une valeur.


J'aurais tendance à être d'accord avec cette explication, mais de nombreuses propriétés de lecture / écriture dans WPF ont ce préfixe ... Je pense que c'est plutôt destiné à montrer que la propriété est une bool


@Thomas et Rachel - en fait c'est ce que je voulais dire, mais j'ai réussi à écrire quelque chose d'autre :)



14
votes

Personnellement, j'essaie toujours de préfixer les valeurs booléennes avec quelque chose qui ajoute un peu plus de sens (est, a, peut, etc.). Mon utilisation provient des directives Microsoft suivantes:

Nommez les propriétés booléennes avec un phrase affirmative (Cansek au lieu de Cantsek). Éventuellement, vous pouvez aussi Préfixes Boolean Properties avec est, Peut, ou a, mais seulement où il ajoute valeur.

MSDN - noms des membres de type

Je ne crois pas que c'était toujours le cas Ce n'était pas toujours le cas. Ces pratiques remontent à .NET 2.0. Avant cela, les choses étaient une partie juste. Nettoyant ces noms dans les versions plus récentes du cadre, cependant, causerait toutes sortes de maux de tête (par conséquent, une partie du code-cadre utilise la convention et certains ne le font pas).

Cela rend définitivement les choses plus lisibles . Même en utilisant un exemple de votre question. Que préféreriez-vous avoir? xxx

ou xxx


6 commentaires

C'est intéressant que c'est une nouvelle recommandation, explique la plupart des winforms n'ayant pas le préfixe.


@Chris S - Il est difficile de tout comprendre la première fois. Cela aurait pu être l'une des leçons tirées de .NET 1 / 1.1


Pour Tabstop, "est" ajoute une valeur claire: la valeur de la propriété vous indique si quelque chose est un arrêt de tabulation; La valeur n'est pas une tabulation elle-même. Pour activé, la valeur ajoutée est plus subtile. "Est" ici distingue ici que quelque chose est activé et un "activé", tout ce qui serait, peut-être une copie activée. Une autre valeur ajoutée est que l'objet lit plus comme anglais: myObject.isenabled.


@EdwardBrey lisant "activé" en tant que nom serait un stretch pour la langue anglaise. Donc je pense que la chute de "est" est appropriée ici


@ fjch1997 Tu as raison. Noun ambiguïté n'est probablement pas la raison. Dans une autre conception, la différenciation pourrait être nécessaire. Par exemple, si vous aviez une touche immuable , je pouvais voir avoir isenabled de type bool et activé (court pour enabledbutton ) de type bouton qui renvoie une copie activée. Cependant, puisque WPF utilise des objets mutables, ce type de différenciation n'est pas nécessaire.


Ajouter est devant les propriétés booléens permet d'ajouter un événement notifiant un changement positif sans conflit de nom. Par exemple, vous pouvez avoir une propriété isenabled et événements activé et désactivé . Ce type de nommage des événements serait cohérent avec l'événement existant FrameworkElement.Initialisé . Donc, peut-être que la justification était de préciser clairement que le député était une propriété, pas un événement. Ou peut-être c'était peut-être de ne pas empêcher d'ajouter de tels événements à l'avenir. Ou peut-être autre chose; Je suis simplement spéculant.



3
votes

Le est préfixe fait partie des directives officielles de conception Microsoft Framework (cela ne signifie pas que tous les produits MS y adhèrent ...).

Personnellement, je le trouve utile, s'il est toujours utilisé. Il vous dit immédiatement qu'une propriété est un booléen. Vous pouvez l'utiliser ou non, la chose la plus importante est d'être cohérente à ce sujet ...

Thomas


0 commentaires