「従来の」C++クラス(いくつかのランダムな宣言)は、次のようになります。
class Foo
{
public:
Foo();
explicit Foo(const std::string&);
~Foo();
enum FooState
{
Idle, Busy, Unknown
};
FooState GetState() const;
bool GetBar() const;
void SetBaz(int);
private:
struct FooPartialImpl;
void HelperFunction1();
void HelperFunction2();
void HelperFunction3();
FooPartialImpl* m_impl; // smart ptr
FooState m_state;
bool m_bar;
int m_baz;
};
このタイプのアクセスレベルの仕様は、元のプログラマーが自分の「アクセス領域」をきちんと整理していなければ、醜くて従うのが難しいといつも思っていました。
Java / C#スタイルの同じスニペットを見ると、次のようになります。
class Foo
{
public: Foo();
public: explicit Foo(const std::string&);
public: ~Foo();
public: enum FooState
{
Idle, Busy, Unknown
};
public: FooState GetState() const;
public: bool GetBar() const;
public: void SetBaz(int);
private: struct FooPartialImpl;
private: void HelperFunction1();
private: void HelperFunction2();
private: void HelperFunction3();
private: FooPartialImpl* m_impl; // smart ptr
private: FooState m_state;
private: bool m_bar;
private: int m_baz;
};
私の意見では、アクセス指定子はターゲットのすぐ隣にあり、行の束ではないため、これはヘッダーではるかに読みやすくなっています。これは、通常の「* .hpp/*。inl」ペアに分離されていないヘッダーのみのテンプレートコードを使用する場合に特に当てはまります。そのシナリオでは、関数の実装のサイズがこの小さいが重要な情報を圧倒しました。
私の質問は単純で、他の誰かがC++コードでこれを積極的に行っているのを見たことがないという事実から生じています。
「クラスビュー」対応のIDEがないと仮定すると、このレベルの冗長性を使用することの明らかな欠点はありますか?
他のスタイルの推奨事項は大歓迎です!