2

オブジェクトのセットアップに関連するため、コンストラクターの直後に「sets」を配置します。私はgets(getsをinquiresに入れる)とsetsを分割しましたが、これが良いかどうかはわかりません。メンバー関数を整理するためのベスト プラクティスは何ですか?

どのようにそのことについて?

class Foo
{
// Friends go here if it has
friend ...;
friend ...;

// First public, then protected and private
public:
    // enums
    enum {...}

    // type defines.
    typedef ...;
    ...

    // Destructor and constructors
    ~Foo();
    Foo(...);
    Foo(...);
    ...

    // Sets.
    void setA(...);
    void setB(...);
    void setC(...);
    ...

    // Inquiries (including gets).
    A a() const;
    B b() const;
    ...

    // Operators.
    void operator()(...);
    ...

    // Operations.
    void doSomething();
    ...

protected:

private:
};
4

1 に答える 1

2

判断するのは難しいです。個人の好みや会社のコーディング基準次第です。あなたのコードを見ると、同意できないことがいくつかあります。

  • あなたの宣言はpubilc、「保護」から「非公開」に順序付けられていません
  • friend宣言は、プライベート領域でも宣言するときに同じ努力をします。だから私は通常それらをプライベートセクションに置くので、それはノイズを少なくしますpublic section.

以下は、私が通常使用する宣言順序です。

クラス内で指定された宣言順序を使用します: public: before private:、データ メンバー (変数) の前のメソッドなど。

クラス定義は、そのpublic: セクションで始まり、その : セクション、その : セクションが続く必要がprotectedありprivateます。これらのセクションのいずれかが空の場合は省略します。

各セクション内では、宣言は通常、次の順序で行う必要があります。

Typedefs and Enums
Constants (static const data members)
Constructors
Destructor
Methods, including static methods
Data Members (except static const data members)

フレンド宣言は常にプライベート セクションにある必要があり、無効化 copy constructorされた演算子やその他の演算子は、プライベート: セクションの最後にある必要があります。それはクラスの最後のものであるべきです。

于 2013-08-10T12:00:36.463 に答える