东西,我发现自己经常做的最近被宣布类型定义相关的是类中的某一类,即C++中的内部typedefs - 风格好还是风格不好?
class Lorem
{
typedef boost::shared_ptr<Lorem> ptr;
typedef std::vector<Lorem::ptr> vector;
//
// ...
//
};
这些类型然后在代码的其他地方使用:
Lorem::vector lorems;
Lorem::ptr lorem(new Lorem());
lorems.push_back(lorem);
的原因,我喜欢它:
- 它减少了由类模板引入的噪音,
std::vector<Lorem>
变成Lorem::vector
等 - 它用作意图声明 - 在上面的示例中,Lorem类旨在通过
boost::shared_ptr
进行引用计数并存储在向量中。 - 它允许实现更改 - 即,如果需要更改Lorem以在后续阶段侵入引用计数(通过
boost::intrusive_ptr
),那么这会对代码产生最小的影响。 - 我认为它看起来'漂亮',可以说更容易阅读。
的原因,我不喜欢它:
- 有时对于依赖关系问题 - 如果你要嵌入,比方说,另一个类而只需要内
Lorem::vector
(或希望)转发声明Lorem(而不是引入对它的头文件的依赖),那么你最终不得不使用显式类型(例如boost::shared_ptr<Lorem>
而不是Lorem::ptr
),这有点不一致。 - 它可能不是很常见,因此难以理解?
我试着用我的编码风格来客观,所以最好能对它有一些其他的看法,这样我就可以剖析我的想法了。
这是一个很好的观点,我不知道它看起来'漂亮'是我的潜意识细微地指出范围有限是一件好事。不过,我想知道STL在课堂模板中主要使用它的事实是否会使其具有细微差别?在“具体”课堂中辩解更难吗? – 2009-04-17 08:55:11
那么标准库是由模板而不是类组成的,但我认为两者的理由是相同的。 – 2009-04-17 09:38:03