490
private const int THE_ANSWER = 42;

また

private const int theAnswer = 42;

個人的には、最新の IDE では、ALL_CAPS が奇妙に見えるため、camelCase を使用する必要があると思います。どう思いますか?

4

9 に答える 9

584

推奨される命名規則と大文字化規則は、定数にP ascal C asingを使用することです(Microsoftには、すべての優先規則を文書化し、ソースのコンプライアンスを確認できるStyleCopという名前のツールがありますが、多くの人の好みには少し肛門性格が強すぎます) 。例えば

private const int TheAnswer = 42;

Pascalの大文字化規則は、Microsoftのフレームワーク設計ガイドラインにも記載されています。

于 2008-10-28T08:25:35.687 に答える
94

視覚的には、大文字が最適です。それはそのようにとても認識できます。一意性と推測の余地を残すために、私は UPPER_CASE に投票します!

const int THE_ANSWER = 42;

: ページの上部にある同じファイル内で、IntelliSense の目的で定数を使用する場合は、大文字が役立ちます。ただし、それらが独立したクラスに移動される場合、例として大文字を使用しても大きな違いはありません。

public static class Constant
{
    public static readonly int Cons1 = 1;
    public static readonly int coNs2 = 2;
    public static readonly int cOns3 = 3;
    public static readonly int CONS4 = 4;
}

// Call constants from anywhere
// Since the class has a unique and recognizable name, Upper Case might lose its charm
private void DoSomething(){
var getCons1 = Constant.Cons1;
var getCons2 = Constant.coNs2;
var getCons3 = Constant.cOns3;
var getCons4 = Constant.CONS4;
 }
于 2014-05-21T15:34:27.137 に答える
73

実は

private const int TheAnswer = 42;

少なくとも、命名規則を決定するための最良の方法である.NETライブラリを見ると、コードが見当違いになることはありません。

于 2008-10-28T08:23:12.820 に答える
24

私はまだ const 値に大文字を使用していますが、これは特定の理由よりも習慣から外れています。

もちろん、これにより、何かが const であることがすぐにわかります。私への質問は次のとおりです。この情報は本当に必要ですか? エラーを回避するのに何らかの方法で役立ちますか? const に値を代入すると、コンパイラは私が馬鹿なことをしたと教えてくれます。

私の結論:キャメルケーシングを使用してください。多分私も私のスタイルを変えるでしょう;-)

編集:

何かがハンガリーのにおいがするというのは、実際には有効な議論ではありません、IMO. 質問は常に次のようにする必要があります。

ハンガリー語が役立つ場合があります。現在ではそれほど多くはありませんが、まだ存在しています。

于 2008-10-28T08:21:42.277 に答える
18

まず、ハンガリー記法は、プレフィックスを使用してパラメーターのデータ型または使用目的を表示する慣行です。Microsoft の命名規則は、ハンガリー語表記法にノーと言う http://en.wikipedia.org/wiki/Hungarian_notation http://msdn.microsoft.com/en-us/library/ms229045.aspx

ここに記載されているように、大文字の使用は推奨されません。 http://en.wikibooks.org/wiki/C_Sharp_Programming/Naming

Microsoft はまた、既存のスキームに一致させるために大文字を使用できるとここで述べています。 http://msdn.microsoft.com/en-us/library/x2dbyw72.aspx

これで大まかにまとまります。

于 2008-10-28T10:37:47.277 に答える
17

その記事Constants (C# Programming Guide)で、マイクロソフトは次の例を示しています。

class Calendar3
{
    const int months = 12;
    const int weeks = 52;
    const int days = 365;

    const double daysPerWeek = (double) days / (double) weeks;
    const double daysPerMonth = (double) days / (double) months;
}

そのため、定数について、Microsoft が の使用を推奨しているようですcamelCasing。ただし、これらの定数はローカルで定義されていることに注意してください。

間違いなく、外部から見える定数の名前付けは、より興味深いものです。実際には、Microsoft はパブリック定数を .NET クラス ライブラリにfieldsとして文書化しています。ここではいくつかの例を示します。

最初の 2 つは の例ですPascalCasing。3 番目は、Microsoft の2 文字の頭字語の大文字表記規則に従っているように見えます(ただし、piは頭字語ではありません)。Eそして 4 番目のものは、2 文字の頭字語の規則が(数学定数eを表す) のような 1 文字の頭字語または識別子に拡張されることを示唆しているようです。

さらに、Capitalization Conventions ドキュメントで、Microsoft は、フィールド識別子に名前を付ける必要があることを非常に直接的に述べており、 MessageQueue.InfiniteTimeoutおよびUInt32.MinPascalCasingの次の例を示しています。

public class MessageQueue
{
    public static readonly TimeSpan InfiniteTimeout;
}

public struct UInt32
{
    public const Min = 0;
}

結論: PascalCasingpublic 定数const(またはstatic readonlyフィールドとして文書化されています) に使用します。

最後に、私の知る限り、Microsoft は、質問に示されている例に示されているように、プライベート識別子の特定の命名規則や大文字化規則を推奨していません。

于 2014-01-02T19:42:58.587 に答える
13

ハンガリー人をハンガリー人に任せてください。

この例では、決定的な記事を省略して、

private const int Answer = 42;

それが答えですか、それとも答えですか?

*パスカルが厳密に正しいように編集しましたが、質問は生命、宇宙、そしてすべてに対する答えを求めていると思っていました.

于 2008-10-28T08:19:47.693 に答える
8

私は実際にここでPascalCaseを好む傾向がありますが、習慣から、私はUPPER_CASEの罪を犯しています...

于 2008-10-28T08:27:45.870 に答える
8

ALL_CAPS は、私が信じている C および C++ の作業方法から取られています。この記事では、スタイルの違いがどのように生じたかについて説明します

Visual Studio などの新しい IDE では、タイプ、スコープ、およびそれらが定数であるかどうかを簡単に識別できるため、厳密には必要ありません。

FxCopおよび Microsoft StyleCopソフトウェアは、ガイドラインを提供し、コードをチェックして、誰もが同じように作業できるようにするのに役立ちます。

于 2008-10-28T08:21:11.763 に答える