2011-04-27 52 views

回答

4

是的,增加代碼可讀性是一個好習慣。

讓狀態您有:

class Foo 
{ 
    public: 
    Foo(const myotherlib::x509::certificate& cert); 

    private: 

    myotherlib::x509::certificate m_cert; 
} 

這是的typedef的東西一點點是個好主意:

class Foo 
{ 
    public: 

    typedef myotherlib::x509::certificate cert_type; 

    Foo(const cert_type& cert); 

    private: 

    cert_type m_cert; 
} 

這增加了代碼的可讀性和有整齊的副作用,如果你曾經更改基礎證書類,您只需更改typedef

並回答更完全,同樣的規則可能適用於「多層次」的指針:如果你真的是書面方式Foo***所有的地方它確是一個好主意,讓事情更易讀,typedef是這是一個很好的工具。

如果有一天您決定用具有相同語義的類替換您的Foo***,那麼更改將不僅僅在您的代碼中,而且在任何使用您的代碼的客戶端代碼中也是微不足道的。

+3

Downvoter,謹慎地闡述?我從不低估報復(就像我的個人資料顯示的那樣),請繼續。 – ereOn 2011-04-27 06:16:30

+1

我猜downvoter認爲你沒有回答這個問題:你解釋了命名空間中的typedefing類型可能是有用的,但問題是關於多級別的指針: typedef Foo ** FooPtrs; – 2011-04-27 07:25:07

+0

@安德爾:是的,可能就是這樣。但是,我的答案確實在談論多級指針,而不是立即。對我而言,typedef的使用對於長類型名稱更有意義,這就是爲什麼我首先選擇了這個例子。也許這確實是一個錯誤的選擇。不知道它值得downvote然而(它不像我的答案本質上是錯誤的)。感謝您的反饋。 – ereOn 2011-04-27 07:41:13

2

是的,將它定義爲typedef總是個好主意。例如,現在

typedef int* intp; 
typedef int** intpp; 

,如果你的代碼確實是有組織的,那麼你可以簡單的typedef更改爲使用自定義或任何其他的智能指針。例如

typedef auto_ptr<int> intp; 

這可能是調試的好方法。

+1

只記得爲不同的指針使用不同的typedef。也就是說,把第二個intp改成別的東西。 – mdec 2011-04-27 06:18:34

相關問題