[英]Implicit (default) values vs Explicit values
依賴隱式默認值是不好的做法,例如:
class Node
{
int red;
int green;
int blue;
bool grayscale;
Node next;
}
而不是明確地設置它們:
class Node
{
int red = 0;
int green = 0;
int blue = 0;
bool grayscale = false;
Node next = null;
}
不,我認為依靠默認值是可以的。 明確地分配它們只會使代碼混亂。 此外,它的優點是可以更輕松地區分您指定非默認值的字段。
我總是把它們放進去,因為它證明你已經考慮過那些成員的初始價值應該是什么。
bool isCool;
可能意味着“我知道這在啟動時並不酷”,或者它可能意味着你沒有想到它。
bool isCool = false;
顯然是一個刻意的決定。
我不認為這是一個不好的做法,因為默認值是一個在語言中工作的開發人員應該知道/被迫學習的東西。
我想到的唯一缺點是,不列出默認值可能會導致人們永遠不會看到初始值。 如果它被初始化為默認值之外的其他東西,可能需要注意一點。
這主要是主觀的,imho。
對我來說,即使它是明確聲明的默認值,它也太“羅嗦”了......在閱讀代碼時,它仍然會讓我慢下來,讓我們面對它......這是多余的。
我也認為代碼更頻繁,因為人們不知道默認值,或者有一些非理性的擔心,他們可能會在C#5.0中將bool的默認值更改為true。
開發人員有責任了解原始數據類型的默認值,因此它們不是絕對必要的。 但是,正如一些人所指出的那樣,它確實證明了你已經考慮過這個問題。
此外,代碼中的絕大多數變量類型都是您創建的自定義類型。 開發人員不負責了解自定義枚舉的默認值。 良好的溝通要求您在這些情況下指定默認值。 由於我們是習慣的生物,因此最好養成始終初始化變量的習慣。 只要在方法上保持一致,無論是在類級別還是在構造函數中執行它都沒有區別。
作為之前所有答案的替代方法,我使用將這些初始值放在構造函數中,所以我不打算在它之外尋找變量的初始值。
class Node
{
int red;
int green;
int blue;
bool grayscale;
Node next;
public Node() {
red = 0;
green = 0;
blue = 0;
grayscale = false;
next = null;
}
}
我更喜歡明確地給出值。 它試圖從內存中加載默認值對大腦的壓力較小。 最好讓他們預先准備好。 沒有傷害。
喜歡
string name = string.Empty;
要么
Guid userID = Guid.Empty;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.