C# で名前空間または型エイリアスを定義するための確立された命名規則またはコーディング規則はありますか?
ご存じない方のために説明すると、C# 言語には、名前空間と型のファイルに対してローカルにエイリアスを定義できる機能があります。これは、サード パーティのライブラリと名前が競合する場合や、コード内の型名を短縮する場合に役立ちます。以下は、それがどのように見えるかの例です。
using Forms = System.Windows.Forms;
私が Web で見た例のほとんどは、上記の例のエイリアスFormsのように、省略されていない大文字の名前をエイリアスとして使用する傾向があります。名前空間System.CollectionsのcolAliasエイリアスの例を説明する公式の MSDN ページを含むいくつかの場所。さらに複雑にするために、名前空間エイリアスまたは型エイリアスのどちらが定義されているかに応じて、異なるガイドラインを選択することを好む人もいるかもしれません。
エイリアス名を使用したガイドラインに関心がある理由の背景を説明するために、私が何をしているのかを説明します。最近のプロジェクトでは、型エイリアスを使用して複雑な型引数を受け入れるジェネリック基本クラスから継承するいくつかのクラスがあるパターンを単純化し始めました。
したがって、この手法を使用すると、型エイリアスが適用されると、以下の複雑な例がはるかに読みやすくなります。
public class MyClass: MyGenericBaseClass<TripleLindyFancyAlgorithm<List<SomeValueType>>, List<SomeValueType>>
{
public override List<SomeValueType> DoSomething(TripleLindyFancyAlgorithm<List<SomeValueType>> operation)
{
// ...
}
}
そして、型エイリアスを使用してよりクリーンなバージョンを作成する必要があります。
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)
{
// ...
}
}
これははるかに単純に見えますが、Resultなどのエイリアスは実際には単なる List のエイリアスであり、 Resultと呼ばれる実際の型がないことを忘れがちです。概念を視覚的に分離するために、型エイリアスと実際の型を区別しやすくするために、プライベート メンバーの前にアンダースコア '_' を使用するのと同様の接頭辞規則に従うことを検討しています。ただし、そうする前に、車輪を再発明していないことを確認したいと思います。おそらく、すでに確立された慣習が他にもあるからです。