web-dev-qa-db-ja.com

C#関数パラメーターに使用する命名規則

Parameterで渡された名前が新しい型にキャストされる状況がありますが、Passedオブジェクトの名前は同じままである必要があります。クラス属性の場合、この演算子を使用できますが、関数のローカル変数はどうでしょうか。広く使用されているコーディング規約。

例、

void MyFunc(BaseClass myPara)
{
  DerivedClass _mypara = (BaseClass)myPara;
}

または逆に

void MyFunc(BaseClass _myPara)
{
  DerivedClass mypara = (BaseClass)_myPara;
}

または他の慣習

14
Shamim Hafiz

パラメータまたはローカル変数の前にアンダースコアを付けることは、C#ではあまり慣用的ではなく、読むのも簡単ではなく、頻繁に使用されることもありません(合法であるため、必要に応じて自由に使用できます)。

パラメータと変数に最適な名前は、わかりやすい名前です。なぜ型を変更するのか、キャストの理由は何かを考える必要があります。次に、2つの異なる名前を考え出すことができるはずです。例えば。 「person」を渡して「customer」に変換した場合、変数名にpersonやcustomerを使用できます。

あなたが本当に2つの異なる名前を考えることができないなら、私は名前に「as」を使用します( これについて数日前にこのサイトで質問がありました )。例えば。ローカル変数には「myParaAsDerived」を使用します。

可能な限りこれを使用しない場合は、解決している問題とどのような意味のある名前を使用できるかについて考えますが、それ以外のすべてが失敗した場合は、かなり読みやすくなります。

11
Steve

まず使用する

void MyFunc(BaseClass _myPara)
{
} 

間違いです!多くのC#コーディング標準として、すべてのフィールド名に「_」プレフィックスを使用します!他のプログラマがコードを理解しやすくする必要があるため、多くのC#プログラマを誤解させるような方法でコードを記述しないでください。

小さなメソッドのすべての利点を考えると、私は個人的にローカル変数をパラメーターから分離するための命名規則の必要性を感じていません。メソッドに非常に多くのパラメーターとローカル変数があり、命名規則がないと何が起こっているのかわからない場合は、さらに大きな問題があります。 (これは クリーンコードブック 、a Javaブックで十分にカバーされていますが、C#プログラマーとして非常に有益であることがまだわかりました)

9
Ian

C#の命名規則では、次のようになります。

  • メソッド、パブリックプロパティ、クラス名にPascalCasingを使用する
  • インターフェイス名にIPascalCasingを使用する(最初のIに注意)
  • メソッドのパラメーターとローカル変数にcamelCasingを使用する
  • クラス全体のプライベートフィールドに_underscoredCamelCasingを使用する

また、ハンガリー語の表記には近づかないでください。それは無意味であり、C#の規則に準拠していません。

4
Matteo Mosca

それらに接頭辞を付けたい場合は、パラメータにp_を使用する必要があります。一般的に、これを行うと、多くの人を困らせると思います。しかし、一貫している必要があります。同じ名前を付けたい変数に2つの異なる名前が必要だからといって、それを1か所で行うだけではいけません。

変数の命名に関する一般的な規則は次のようになります。

  • 1つのタイプのオブジェクト名しかない場合は、その機能によってそれを指定します。

    var builder = new PizzaBuilder();
    
  • 機能と専門性によって複数の名前を付けている場合:

    var pizzaBuilder = new PizzaBuilder();
    var milkShakeBuilder = new MilkShakeBuilder();
    
4
user23157

変数の名前付けにアンダースコアを付けることは、クラスレベルの変数を具体的に参照するための「this」キーワードがあるため、必要のない場合があります。変数の命名規則についてエキスパートからさらに詳しく知りたい場合は、Tim Ottingerによる「Ottinger's Rules for Variable and Class Naming」という悪名高い論文(クリーンコーディングメンターのRobert C. Martinによる記事)をご覧になることをお勧めします。 。

Ottingerは、よく書かれた文章のように、コードは可能な限り人間が読めるようにしておく必要があると述べています...

public void Function(string p_Parameter1, string p_Parameter2)

...のように読みやすくなります...

public void Function(string parameter1, string parameter2)

...ここで、parameter1および2は、対応する変数の説明的な名前です。

これが一見の価値があるリンクです: Link

2
Luis Aguilar