2010-10-06 35 views
3

最近一位同事問我關於在C++代碼中使用異常規範的意見,並且我能夠通過Herb Sutter疏通本文:A Pragmatic Look at Exception Specifications。這篇文章與Herb Sutter的大部分內容一樣,是一篇教育性文章,但簡短的回答是「不要那樣做」。基於經驗的C++錯誤特徵

在總結中,他提到了一首名爲「Twas night before Before」的詩,其中實際上,標準委員會在用戶要求最後一分鐘添加一個功能時才發現,它所要求的是什麼,它並沒有真正做到他們想要的。是的,例外規格符合該法案。正如他所說的那樣,「當時這個功能似乎是個好主意,而這正是一些人所要求的。」如果這還不夠,那麼他會訪問''出口'',結果也是相似的。

所以問題是這樣的:如果你不希望經歷眼淚,C++的什麼'特性'就會被打破,不應該被使用。這可能是主觀爭吵的犧牲品,但我希望人們會引用特定經驗,其中特徵部署僅用於引起可衡量的問題。更好的做法是引用像Sutter(或任何深入參與標準的人)等關鍵人物的文章,以警告人們不要使用某項功能。

+1

嗯,我可以想到「多重繼承」:有很多消息來源認爲應該避免。然而,我發現它在元編程方面非常有用(請參閱着名的GenScatteredHierarchy示例...) – Emiliano 2010-10-06 14:51:27

+1

這是一項民意調查,它是主觀性的,並詢問關於某種語言的*壞*。平均半衰期約5分鐘。 – 2010-10-06 14:53:50

+0

我同意它可以吸引那種評論。但是,我認爲我很清楚。這個例子是一個重要的亮點,在接受它的幾年後重新訪問它,並根據* experience *給出爲什麼添加該功能是錯誤的原因。這是我正在尋找的那種反饋。太糟糕了,它被擊落了。 – 2010-10-06 15:18:00

回答

5

如果還包含庫功能:auto_ptr。它有它的用途,但它也很容易被誤用。接下來的C++標準將不贊成使用更安全,更靈活的std :: unique_ptr。