簡體   English   中英

隱式(默認)值與顯式值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM