38 votes

Comment nommer des fichiers source C # pour des classes génériques

Je suis en train d'en tenir aux généralités conventions de nommage, telles que celles décrites dans les lignes Directrices de Conception pour le Développement de Bibliothèques de Classe. J'ai mis tous les types dans son propre fichier source (et des classes partielles sera réparti sur plusieurs fichiers comme décrit dans la question des Conventions de Nommage pour les Partiels de Fichiers de Classe), en utilisant le nom du type que le nom de fichier.

Exemples:

namespace Demo.Bla                         //  project
{
    enum FlowDirection { }                 //  in file FlowDirection.cs
    class LayoutManager { }                //  in file LayoutManager.cs
}

namespace Demo.Bla.LayoutControllers       //  folder LayoutControllers in project
{
    class StackPanelLayoutController { }   //  in file LayoutControllers/StackPanelLayoutController
}

Mais je ne suis pas sûr que je suis venu avec une façon astucieuse de nommer la source des fichiers qui contiennent des classes génériques. Dire que j'ai des classes suivantes, par exemple:

namespace Demo.Bla.Collections             //  folder Collections
{
    class Map<T> { }                       //  in file Map.cs (obviously)
    class Bag { }                          //  in file Bag.cs (obviously)
    class Bag<T> : Bag { }                 //  also in file Bag.cs ???
}

Dois-je mettre le code à la fois de la non-générique et le générique de l' Bag des classes dans le même Bag.cs le fichier? Quelles sont vos habitudes?

40voto

Mattias Jakobsson Points 6101

Je pense que la solution commune à ce problème est de nommer le fichier comme ceci:

 {ClassName}`{NumberOfGenericParameters}
 

Cela vous donnerait ce nom de fichier:

 Bag.cs and Bag`1.cs
 

C’est ainsi que Microsoft traite ce problème dans des environnements tels que Asp.net Mvc.

17voto

herzmeister Points 7077

J'ai vu des bibliothèques utiliser

 Bag.cs
Bag`1.cs
Bag`2.cs
 

car c’est ce que les Type.Name afficheraient.

Je veux être plus descriptif avec les paramètres de type alors j'ai tendance à utiliser ces derniers temps

 Bag.cs
Bag{T}.cs
Bag{TKey, TValue}.cs
 

Ce format est également pris en charge par les commentaires XML.

 /// <summary>
/// ...
/// Uses the <see cref="T:MyLibrary.Bag{TKey, TValue}" /> class.
/// </summary>
 

5voto

Jon Skeet Points 692016

Habituellement, si j'ai plusieurs types de "surchargé" par le nombre de paramètres de type, c'est soit parce que l'un dérive de l'autre ou l'un est utilisé pour créer les autres. Je viens de les mettre dans le même fichier.

Une autre option serait de les diviser en plusieurs fichiers, faire un fichier "primaire", et les autres "dépendre" dans le fichier build, que par la classe partielle à la question que vous avez associé dans la question.

De cette façon, vous pourriez finir avec un lien visuel dans Visual Studio, mais encore une classe par fichier afin de le rendre plus facile de travailler avec eux.

0voto

ChrisW Points 37322

J'ajoute un suffixe 'T' aux noms de mes classes génériques.

 class Bag { }                           // in file Bag.cs 
class BagT<T> : Bag { }                 // in file BagT.cs
class BagInputs : BagT<Input>           // in file BagInputs.cs
 

Tu as demandé,

Devrais-je mettre le code des classes Bag non génériques et génériques dans le même fichier Bag.cs? Quelles sont tes habitudes?

La convention ci-dessus est non standard. Je devrais préciser que je répondais "quelles sont mes habitudes" et pas nécessairement "ce que vous devriez faire".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X