“传统” 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,使用这种冗长级别是否有任何明显的缺点?
欢迎任何其他风格的建议!