2010-12-15 32 views
1

構造体とその変数の名前はどのようにしたらよいですか?これは、オブジェクト内の構造体を含みます...C++:構造体の命名規則

ありがとうございます。

+0

私はそれが唯一のTE目的だった、あなたは識別子を使用すべきかについての完全なビジョンを与えるためにしようとしていました。 .. – ArBR

答えて

3

好きなスタイルを見つけてください。そのように簡単です。私は次のようにします:

struct Foo 
{ 
    int bar; 
    char baz; 

    Foo foo; 
}; 

構造体とクラスの最初の文字は大文字で、変数はそうではありません。

もう一度、これは私のスタイルです。あなたに合ったスタイルを見つけてください。何も言わない。

1

私がよく知っている命名規則は、プラットフォーム、ライブラリなどです。たとえば、Windows SDKには標準があり、CRTには標準があり、MFCには標準があります。

私はC++の標準は見ませんでした。おそらく、他の人が特定のプラットフォームで使用している命名規則を見てみるべきでしょう。

+0

私は大部分のこの標準に従っています:http://www.possibility.com/Cpp/CppCodingStandard.html –

+2

それはあなたの答えです。結局のところ、重要なことは、あなたとあなたが一緒に働く人々が、使用される命名標準に慣れていることです。 –

+0

その標準は構造体については言及していないので、私はその質問に尋ねました。 –

2

あなたの周りの人とあなたのスタイルを調和させる - 理由のなかで、あなたのチームの誰もが一貫したことをしているなら、構造体と変数にどの命名体系を使用するかは関係ありません。このような

FunkyContainer

と変数:

は個人的に、私はこのような構造体に名前を付ける

ratherUsefulVariable

しかし、あなたは家のスタイルに合わせて何を適応する必要があり、またはあなたのチームのコードの一貫性を損なうでしょう。

「オブジェクト内部の構造体」はありません。ネストされた構造体を持つことができます。構造体は構造体内にありますが、それは同じものではありません。オブジェクトは構造体のインスタンスです。構造体そのものではありません。 (。オブジェクトも明らかに、クラスのインスタンスであることができるが、それはここでは区別をする目的のためには無関係です)

+0

申し訳ありませんが私は明確ではなかった、 "オブジェクト"私はクラスのインスタンスを意味します。 –

+1

@Jay:同じコメントがそこに適用されます。*オブジェクト*の中にネストされた構造体はありません。ネストされた構造体は*クラス*内にあります。 –

0

これは、私は非常に完全であると考えて命名規則のための完全なリストである:

  • 名前付けにはUS-Englishを使用します。
  • 識別子の命名にはPascalとCamelのケーシングを使用します。
  • ハンガリー表記を使用したり、識別子に他のタイプ識別を追加したりしないでください。
  • メンバーフィールドのプレフィックスを付けないでください。
  • 識別子を区別するためにケースを使用しないでください。
  • 省略形は慎重に使用してください。
  • 識別子にアンダースコアを使用しないでください。
  • 識別子にはその種類に応じて名前を付けます。
  • 名前の名前空間は、明確に定義されたパターンに従います。
  • クラスまたは構造体名に接尾辞を追加しないでください。
  • クラスまたは構造体に名前を付けるには、名詞または名詞句を使用します。
  • 接頭辞は文字Iとインターフェースします。
  • インターフェースのデフォルト実装には、同様の名前を使用します。
  • 属性を持つ属性の接尾辞の名前。
  • 列挙型にEnumサフィックスを追加しないでください。
  • 列挙型には特異な名前を使用してください。
  • ビットフィールドを表す列挙に複数の名前を使用します。
  • 数字と間違える可能性のある文字は使用しないでください。
  • イベントに関連するデリゲートにEventHandlerを追加します。
  • コールバックメソッドに関連する代理人にコールバックを追加します。
  • コールバックメソッドにコールバックまたは同様の接尾辞を追加しないでください。
  • イベントの名前付けに動詞(gerund)を使用します。
  • イベントの名前にイベントサフィックス(またはその他のタイプに関連するサフィックス)を追加しないでください。
  • 事前イベントと事後イベントを表すには、-ingおよび-ed形式を使用します。
  • イベントハンドラの先頭にOnを付けます。
  • 例外を持つサフィックス例外クラス。
  • 識別子にコードアーカイブ関連のプレフィックスを追加しないでください。
  • 名前空間を含むDLLアセンブリの名前を指定します。
  • MRビルディングブロックプレフィックスをソースファイルに追加しないでください。
  • ソースファイルの命名にはパスカルケーシングを使用してください。
  • メインクラスのソースファイルに名前を付けます。
  • thisのみを使用します。建設。

これはC#用ですが、Java/C++にも適用されます。コードを標準化する場合は、HIGH·INTEGRITY C++ CODING STANDARD MANUALを参照することをお勧めします。

  • クラス、構造体(パスカル、例えば:AppDomainの)
  • 列挙型(パスカル、例えば:エラーレベル)
  • 列挙値(あなたは次のようにそれを行う必要がありますケース識別子の

    パスカル、例えば:あるFatalError)

  • イベント(パスカル、例えば:とvalueChange)
  • Exceptionクラスパスカル、例えば:WebException)
  • フィールド(キャメル、例えば:listItemの)
  • のConstフィールドパスカル、例えば:MaximumItems)
  • 読み取り専用の静的フィールドパスカル、例えば:RedValue)
  • インタフェース(パスカル、例えば:IDisposableインター)
  • 法(パスカル、例:ToString)
  • 名前空間(パスカル、例:システム。ドローイング)
  • パラメータ(キャメル、例えば:型名)
  • プロパティ(パスカル、例えば:BackColorプロパティ)
+0

あなたはあなたがダウン投票しているwhayに関するコメントを追加します。だから私はこれで間違ったことを理解することができます。 – ArBR

+1

うん、それは私が探しているものではない... –

+0

ラクダのケースは確かに標準化されていない。 –