2010-09-01 7 views
6

Tout au long de Silverlight et WPF, les propriétés qui sont des valeurs booléennes sont préfixées avec est- (almost all), par exemple:Est-il activé ou activé?

IsEnabled
IsTabStop
IsHitTestVisible

Dans tous les autres cadres de Microsoft (winforms, BCL, ASP.NET) n'est pas utilisé. Qu'est-ce qui a incité leur équipe à s'éloigner de la convention de nommage d'origine - est-ce une évolution ou un manque d'appellation qui a dû coller?

Répondre

13

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

nom Do propriétés booléennes avec une expression positive (CanSeek au lieu de CantSeek). En option, vous pouvez également préfixer les propriétés booléennes avec Is, Can, ou Has, mais seulement où il ajoute la valeur .

MSDN - Names of Type Members

Je ne crois pas que ce soit toujours le cas Ce ne fut pas toujours le cas. Ces pratiques remontent à .NET 2.0. Avant cela, les choses allaient bien. Cependant, le nettoyage de ces noms dans les versions les plus récentes du Framework provoquerait toutes sortes de maux de tête (d'où le fait que certains codes utilisent la convention et d'autres non).

Cependant, cela rend les choses plus lisibles. Même en utilisant un exemple de votre question. Lequel préférerais-tu avoir?

// ambiguous naming, could mean many things 
myTab.TabStop 

ou

// definitely a true/false value 
myTab.IsTabStop 
+1

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

+1

@Chris S - Il est difficile de tout faire correctement la première fois. Cela peut avoir été l'un des enseignements tirés de .NET 1/1.1 –

+0

Pour TabStop, "Is" 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" distingue ici si quelque chose est activé et un "activé", quel qu'il soit, peut-être une copie activée de l'objet. Une autre valeur ajoutée est que l'objet lit plus comme English: myObject.IsEnabled. –

3

Le préfixe Is peut donner un indice sur le fait que la propriété n'a qu'un accesseur get, et, comme Thomas et Rachel l'ont dit, c'est un bool. Ignorez le préfixe si vous avez l'intention d'implémenter les accesseurs get et set et que son type est autre que bool.

+5

Je suis en désaccord, je sais que je l'ai mis 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 pour n'importe quelle valeur. – Rachel

+5

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 qu'il est plutôt destiné à montrer que la propriété est un booléen –

+0

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

3

Le préfixe Is fait partie du cadre officiel de Microsoft lignes directrices de conception (cela ne signifie pas que tous les produits MS adhèrent ...). Personnellement, je le trouve utile, s'il est utilisé de manière cohérente. Il vous indique 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érent à ce sujet ...

Thomas