2010-05-14 59 views
2

我在MSDN中看到了多個用於聲明類尾部內部字段的示例。有什麼意義?在課程結束時聲明變量的要點是什麼?

我覺得這是一個有點尷尬,因爲每一次的Visual Studio將其添加其添加到課程結束後的方法,所以需要在每次移動它...

class A 
{ 
    public A(){} 
    // Methods, Properties, etc ... 

    private string name; 
} 

class A 
{ 
    private string name; 

    public A(){} 
    // Methods, Properties, etc ... 
} 

回答

3

在C++中,將類的公共接口置於頂部是很有意義的,這樣類的任何用戶都可以打開頭文件並快速查看可用內容。暗示,受保護和私人成員被置於底部。

在C#和Java中,接口和實現完全交織在一起,人們可能無法打開類的源代碼來查看可用內容。相反,他們會依賴代碼完成或生成文檔。在這種情況下,班級成員的排序是無關緊要的。

2

如果它是顯然這個變量已經被聲明瞭,而代碼只是一個例子,那麼可以說這會讓你更快地展現出來 - 這是我能想到的。

像ReSharper這樣的插件將允許您在按鍵組合的情況下自動應用此佈局,順便說一句,如果它是您想要的。

+0

因此,您認爲在MSDN中它僅用於演示目的,沒有任何「隱藏詭計」邏輯。 – serhio 2010-05-14 12:07:13

+0

這是我的猜測 – 2010-05-14 16:10:08

-1

我不認爲這有任何正當理由。如果你對類聲明的類運行代碼分析,你會得到一個錯誤,因爲私有字段應該在類之上(以及常量之下)聲明。

+0

取決於語言。 – 2011-11-21 12:35:29

1

許多程序員都在努力尋求能夠幫助客戶理解的自我記錄代碼。在C++類的聲明,他們會從最重要的去(即什麼是可能是最經常的檢查)到最不重要:

class Class { 
public: 
    // First what interest all clients. 

    static Class FromFoobar(float foobar); // Named constructors in client code 
              // often document best 

    Class();        // "Unnamed" constructors. 

    /* public methods */ 

protected: 

    // This is only of interest to those who specialize 
    // your class. 

private: 
    // Of interest to your class. 
}; 

大廈,如果你使用Qt,下面的順序可能是有趣:

class SomeQtClass : public QObject { 
public: 
signals:  // what clients can couple on 
public slots: // what clients can couple to 

protected: 
protected slots: 
}; 

然後相同的保護和私人插槽。爲什麼我喜歡通過插槽的信號沒有具體的原因;也許是因爲信號總是公開的,但我認爲它們的排序取決於情況,無論如何,我保持一致。

我喜歡另外一個位是使用的訪問符從數據直觀地單獨行爲(最後重要性排序如下,行爲首先,數據,因爲行爲是類實現的最高利息):

class Class { 
private: 
    void foobar() ; 

private: 
    float frob_; 
    int glob_; 
}; 

保持最後一條規則有助於防止類組件的視覺散射(我們都知道隨着時間的推移,當變量和函數混合起來時,一些遺留類是如何看起來的),而不是?

相關問題