Conventions d'alias de type / espace de noms en C #

Sont là sont des noms ou des conventions de codage pour la définition espace de noms ou de type alias en C#?

Pour ceux qui l'ignorent, le langage C# a une fonction où les alias peuvent être locales définies dans un fichier pour les espaces de noms et les types. Cela peut être utile quand il y a des conflits de noms avec des bibliothèques tierces ainsi que pour raccourcir les noms de type au sein de votre code. Ci-dessous est un exemple de ce à quoi il ressemble.

using Forms = System.Windows.Forms;

La plupart des exemples que j'ai vu sur le web ont tendance à utiliser non capitalisés noms d'alias tels que les alias Formes dans l'exemple ci-dessus. Dans certains endroits, y compris la officiel page MSDN qui explique exemple avec un alias de colAlias pour l'espace de noms Système.Collections. Pour le rendre plus compliqué il y a peut être une préférence pour certains de choisir des critères différents selon que l'espace de noms d'alias ou un alias de type est en cours de définition.

Afin de donner un peu de fond de pourquoi je suis intéressé toutes les lignes directrices avec les noms d'alias, je vais vous expliquer ce que je fais. Dans un projet récent, j'ai commencé à la simplification d'un modèle où j'ai plusieurs classes qui héritent d'une classe générique de base qui accepte de type complexe arguments en utilisant des types d'alias.

Donc, en utilisant cette technique, le complexe de l'exemple ci-dessous devient beaucoup plus lisible une fois le type d'alias sont appliquées.

public class MyClass: MyGenericBaseClass<TripleLindyFancyAlgorithm<List<SomeValueType>>, List<SomeValueType>>
{
    public override List<SomeValueType> DoSomething(TripleLindyFancyAlgorithm<List<SomeValueType>> operation)
    {
        //...
    }
 }

Et en dessous de la doit cleaner version à l'aide de types d'alias.

using Result = List<SomeValueType>;
using Algorithm = TripleLindyFancyAlgorithm<List<SomeValueType>>; //Note: cannot reference an alias within an alias definition!

public class MyClass: MyGenericBaseClass<Algorithm, Result>
{
    public override Result DoSomething(Algorithm operation)
    {
        //...
    }
 }

Bien que cela semble beaucoup plus simpliste, il est facile d'oublier qu'un alias comme Résultat est en fait qu'un alias de la Liste et qu'il n'existe pas de type de Résultat. Afin de séparer les concepts visuellement je suis en train d'étudier à la suite de certains préfixant convention similaire à l'utilisation de l'underscore '_' avant privés membres afin de les aider à distinguer les types d'alias de types réels. Avant de me le faire mais je tiens à vous assurer que je ne suis pas réinventer la roue car peut-être qu'il y a déjà plus de conventions établies.

source d'informationauteur