東西,我發現自己經常做的最近被宣佈類型定義相關的是類中的某一類,即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