“传统”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,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代码中积极地做这件事.
假设我没有“Class View”能力的IDE,那么使用这种级别的冗长有什么明显的缺点吗?
欢迎任何其他风格的建议!