2013-06-02 31 views
2

在構造函數中將變量傳遞給屬性時,是否有「正確」的方式來命名變量?示例(在c#中):在構造函數參數中具有相似名稱並作爲屬性具有相似名稱的變量的常見做法

public class MyClass 
{ 
    private int index; 

    public MyClass(int i) 
    { 
     index = i; 
    } 
} 

當兩個變量是「相同」時,是否通常更簡潔地命名一個等等?至少我想保持一致,但是我想知道是否有一種可接受的方式來做到這一點。

回答

4
public MyClass(int index) 
{ 
    this.index = index; 
} 

這是至少在Java中做的常見方式,我想這是the same in C#。它使名稱比i更有意義,並使用與該屬性相同的名稱來指定相同的內容。

+0

的C#中的常用方法是將變量命名爲小寫,並將屬性命名爲大寫。這樣你可以簡單地寫'Index = index;'。 – user1908061

0

爲你寫

以下

可以是另一種選擇,如果變量名是相同的,您可以使用

public class MyClass 
{ 
    private int index; 

    public MyClass(int index) 
    { 
     this.index = index; 
    } 
} 
0

可以命名他們一樣。用這個來澄清你在做什麼。

this.index = index; 

如果你做一個區別(這一點我不推薦),最好是最明確的關於傳遞給方法,而不是你的內部名稱參數名稱。如果其他程序員使用你的類,那麼至少他們知道這個參數意味着什麼。所以,如果你想不同:

public MyClass(int index) 
{ 
    i = index; 
} 
0

我覺得你應該集中精力使「看得見的」變量更具有可讀性(在這種情況下,這是構造函數的參數)。畢竟,這是您班級的用戶在輸入時會看到的內容。

是的,有一個正確的方法避免這種困境,它是遵循爲您的語言建立的命名約定。例如,在C#中,私有字段以下劃線開頭。這可能與Java相同。

也就是說,通過明確使用this來引用字段(在存在命名歧義時適當的練習),區分字段和局部變量是完全可能的。

1

重構建議一類的私有字段是駝峯(你的情況_index)前綴他們_。他們推薦參數爲沒有下劃線的camelCase。

正如評論中所述,沒有MSDN推薦的專用字段標準。

+0

由誰推薦?據我所知,不是由微軟,也不由StackOverflow用戶。 – hvd

+0

重構。微軟沒有推薦。話雖如此,這是相當明智的。 – Shlomo

+0

這肯定是一個明智的命名方案,我會同意的,但不是唯一的一個,並且沒有被用於某種程度上我沒有資格稱之爲「推薦標準」。 – hvd

0

C#的標準會寫你這樣的代碼:

public class MyClass { 
    public MyClass(int index) { 
    Index = index; 
    } 
    public int Index { 
    get { return _index; } 
    private set { _idex = value; /* Perform other actions triggered by the set */ } 
    } 
    private int _index; 
} 

在不需要支持字段屬性(和支持字段)的情況下可以而且應該被簡化爲:

public Index { get; private set; } 
相關問題