9
votes

Qu'est-ce qu'une bonne convention de dénomination à différencier un nom de classe d'une propriété en C #?

Je cours assez souvent que je pensais voir ce que les autres avaient à dire à ce sujet.

Utilisation des conventions de stylécop, je trouve que j'ai souvent un nom de propriété difficile à faire différent du nom de la classe. Par exemple: xxx

Il compile et fonctionne, mais semble être un moyen facile de confondre les choses, même avec l'utilisation de "Ceci". < / p>


4 commentaires

Le problème de couleur de couleur. Si le meilleur nom de la propriété est le nom de la classe, allez-y. Sinon, vous pourriez avoir l'habitude de surcharger inutilement votre propriété et / ou vos noms de classe.


Je suis d'accord, ça me confond aussi. Ceci.ProjectManager le résout à peu près.


En effet, c'est le célèbre problème de «couleur de couleur». La langue C # a été soigneusement conçue pour que vous puissiez vous échapper avec ce modèle, mais cela cause des cas d'angle intéressants. Pour une analyse des conséquences de ces règles, voici mon article: blogs.msdn.com/ERICLIPPERT/ARCHIVE/2009/07/06/COLOR-COLOR.AS PX


Et sur un autre sujet sur le gestionnaire de noms: CODINGHORROR .com / Blog / 2006/03 / ...


3 Réponses :


4
votes

C'est une convention de nommage typique lorsqu'il n'y aura qu'une seule propriété de type ProjectManager dans une classe donnée. Il cesse d'être déroutant car il n'y a pas d'autres utilisations du type de ProjectManager .

Bien sûr, s'il y a d'autres utilisations, vous avez besoin de noms différents.


0 commentaires

11
votes

Ceci est en fait un modèle très courant de la programmation .NET. En particulier, avec des types et des membres énumoires, car il s'agit des directives de conception .NET recommandées par une méthode de programmation.

4.0 Référence des directives de conception

  • http://msdn.microsoft.com /en-us/library/ms229012(V=VS.100).aspx

    Bien que cela puisse être un peu déroutant, ce n'est pas une fois que vous l'avez vu plusieurs fois. Les outils supportent bien ce motif et que ceux-ci sont un type et l'autre une instance, il est difficile de les inverser accidentellement sans provoquer une erreur de compilation.


5 commentaires

Jared, pourriez-vous poster la version actuelle de ce lien? Lorsque .NET 1.1 Les liens sont affichés, certaines personnes se terminent après plus de liens, ne réalisant pas qu'ils sont dans le monde .NET 1.1.


@John, n'a même pas réalisé que j'avais connu des versions 1.1. Merci d'avoir attrapé ça. Mis à jour pour les lignes directrices 4.0


Nous devons amener votre entreprise à passer à .NET 3.5, ou .NET 2.0 au pire. :-)


Je suppose que si cela est pris en charge et une pratique courante, cela ne peut pas être aussi mauvais.


@Andy: En effet, ce n'est pas si mal. Si vous pouvez l'éviter, génial. Mais l'exemple canonique de "couleur de couleur" est canonique car il illustre pourquoi c'est un problème aussi courant. Vous avez une couleur de propriété - quel autre nom pourriez-vous choisir? Vous avez une couleur Enum - à nouveau, quel autre nom pourriez-vous choisir? Tout autre nom pour l'un ou l'autre semble affecté et étrange.



1
votes

Je suis d'accord avec les autres réponses. Pour des raisons d'exigence, je trouve parfois un moyen de généraliser le nom de la classe un peu plus. Je comprends que votre exemple n'était qu'un exemple, mais une façon de le faire serait:

public class Person
{
  // Stuff here
}

public class OtherClass
{
  private Person ProjectManager { get; set; }
}


0 commentaires