2009-08-07 12 views
5

cppファイルの関数の順番に標準がありますか?cppファイル内の関数の順番


があります

  • グローバル関数
  • コンストラクタ
  • デストラクタ
  • ゲッター
  • セッター
  • algoritmic機能
  • 場合QT 、スロット
  • かの派生クラス、オーバーライド機能
  • 静的関数
  • 私は名前を付けることはできません任意の関数型...
  • のcppファイル内

、何か良い方法とがあります注文?

私は上記のリストに書いたとおりに注文します。

...私はそれは何も変更しないことを知っているが、私は格好良いコードを気に

あなたはどのように注文するのですか?

答えて

2

クラス内では、言語によって厳密なルールはありません。クラスの外側では、宣言が2つの別々のものであるときに、宣言が定義の前にあることを保証する必要があります。

一般的に、あなたが作業するチームには、ソースファイルに関する形式規則が示されます。しかし、実際のプログラムの実行には影響しないので、これは単なる美学です。

10

私の個人的な注文はクラス宣言内の順序で与えられます。

class MyClass 
{ 
public: 
    MyClass(); 
    ~MyClass(); 

    void start(); 

protected: 
    static void init(MyClass *); 

private: 
    int m_iCounter; ///< counter variable for.... 
}; 

が.cppファイルに次のようになります。

MyClass::MyClass() : 
    m_iCounter(0) 
{ 
    ... 
} 

MyClass::~MyClass() { 
    ... 
} 

void MyClass::start() { 
    ... 
} 

void MyClass::init(MyClass *) { 
    ... 
} 

以下のように順序が定義されている:

  1. コンストラクタ+デストラクタ
  2. (Qtプロジェクトのみ) s:signals
  3. 公開メソッド - 重要度順に並べ替えられています。最初のゲッターとセッター重要で
  4. プライベートメソッド
  5. プライベートメンバー

役に立てば幸い

  • 保護されたメンバーを命じ
  • 保護方法、その後、start()stop()来ます。

    CIAO、 クリス

  • 4

    これは愚かに見えるかもしれませんが、私はコンストラクタが最初に来るように、その後、パブリックdoStuffメソッド、closeメソッドそして、「『通常の』の使用のために」で私のパブリックメソッドを注文してみてください。..この "ルール"の例外は、最後のコンストラクタの後ろにある〜デストラクタです。

    最後に、プライベートな "ヘルパー"メソッドがあります。

    私はすべての言語(C++、Java、C#、Perl、shなど)でこの同じアプローチを使用していますが、誰も実際にはまだそれを撮影していません。

    乾杯。キース。

    3

    私は順序に慣れ方法は順序があるSymbianプラットフォームからです:

    • 公共、保護された、プライベートメソッド
    • 公共、保護された、プライベート変数

    この理由は、下位互換性のためにすでにリリースされているインタフェースを拡張するための規則によって導かれました。追加する可能性が最も高いのはプライベート変数であるため、クラスの最後に配置されるため、新しいクラスを追加してもクラス内の他の変数の場所は変更されません。インタフェースを変更するものは、「public、protected」の順序でこれより前に来ます。クラスのインスタンス内の変数のメモリ位置は変更されませんが、順序はクラスメソッド用にコピーされます。

    そして仮想関数のためのガイドラインについて質問はありません。最低に最も重要なことから)

    2

    を:

    • プライベート変数(冗談ではない、彼らはあなたの内部の仕組みのほとんどを明らかにするクラス)
    • コンストラクタ
    • パブリックメソッド
    • プロテクトメソッド
    • プライベートateメソッド

    メソッド自体は、「上位レベル:上」、「下位レベル:下」、つまり下のメソッドのみを呼び出すようにメソッドを構造化します。

    1

    私のIDEを使用して、cppファイルの関数に移動し、アルファベット順に並べ替えるか、検索を行い、入力中に検索すると非常に高速です。

    したがって、.cppファイルの機能の順序によってワークフローに違いはありません。

    2

    当社の標準は次のとおりです。

    1. コンストラクタ
    2. デストラクタ
    3. (アルファベット順にソート)パブリックメソッド
    4. プライベートmethors(アルファベット順にソート)
    +0

    アルファベット順はリンクされません。名前をリファクタリングすると、位置が変わる可能性があります。まず、覚えておくべきもう一つのことです。第二に、ソース管理では、何が変更されたのかを把握するのがより複雑です。 – Robert

    +0

    あなたが提案しているように名前をリファクタリングするのは本当にまれです。ほとんどの場合、古いコードのほとんどでCOM互換性を維持する必要があるため(私たちは15年以上出荷されている製品を持っています)。 C++コードのほとんどは、C#とVB.NETでゆっくりと置き換えられています。私の理解では、最後のコンポーネントは来年早々に引退します。 .NETコーディング標準が異なります。 – Tangurena

    1

    時にはそれが持っていると便利です名前のない名前空間にローカルヘルパー関数がほとんどない(別名匿名名前空間)をCPPファイル内に作成します。もしそうなら、これらの関数を(CPPファイル内で)上に置くことをお勧めします。の前に、それらを呼び出す他の関数が定義されていることを確認してください。

    3

    今のところこれまでのことよりもはるかに重要ではありません。まともなIDEは、最近、右クリックや他の簡単なジェスチャーで定義や参照に移動する能力を持っています(または持っている必要があります)。コードを検索することは時間の無駄です。

    私は通常、それらを注文: コンストラクタ デストラクタ 私は残り

    を実装どのような順序私はその後、一緒に戻って、グループ論理/関連機能

    それはおそらくグループ関連のもの/ために、より重要ですヘッダーファイルの内容は、cppファイルよりも読みやすくなります。

    関連する問題