簡體   English   中英

C# 中的命名約定 - 下划線

[英]Naming Conventions in C# - underscores

我在http://www.asp.net 的 MVC3 Razor 教程中看到了這個

public ActionResult Index() {

    return View(_usrs._usrList);

}

這種用法是不是完全錯誤? 我一直認為[文檔]

在 C# 中,我通常看到它僅在為公共屬性定義底層私有成員變量時使用。 其他私有成員變量不會有下划線。 但是,隨着自動屬性的出現,這種用法在很大程度上已經被淘汰了。

還是我看到的新命名約定? 對微軟自己的教程中的這種用法非常好奇。

PS:文章不錯。 只是我傾向於遵循命名約定以獲得更好的可讀性。

StyleCop上有一篇關於C#樣式指南開發的好文章。

.NET的原始指導原則是永遠不要使用下划線,除非它們是私有成員變量的一部分,然后僅作為前綴,例如_customerId 這可能是從MFC繼承而來的,其中'm_'被用作成員變量的前綴。

目前的做法是根本不使用下划線。 私有成員變量和具有相同名稱的參數之間的消歧應該使用'this。'來完成。 實際上,所有對私有成員的引用都應以“this”為前綴。

似乎使用了下划線的唯一地方是單元測試方法。 我不是粉絲,但它可能使方法更具可讀性,例如Throw_If_Customer_Is_Null(){...}

這些指南在http://blogs.msdn.com/b/brada/archive/2005/01/26/361363.aspx中進行了總結,並包含了使用“this”的規定。 而不是下划線。 但是我發現用“this。”來代我的代碼會使代碼變得更加冗長,混亂和難以理解。 此外,它似乎不像下划線那么頻繁,因此作為慣例,“_”似乎更為傳統。

在ASP中。 NET MVC 3下划線更常用。 例如,您需要使用下划線命名所有部分視圖,例如_MyPartialView
它可以輕松區分應用程序中的部分視圖和視圖。

無論如何,在這個例子中我不喜歡唱下划線,因為沒有必要使用它們。 這沒有錯,因為使用實體的下划線列表編寫是一個好習慣。 但我寧願在沒有他們的情況下寫作。
所以兩種方式都是正確的,寫下你感覺更舒服的方式。

在 C# 7 中,我們使用了下划線的新用法,表示“丟棄”變量。 這在使用其中一種 TryParse 方法時很常見——我們有時需要返回值或輸出值,但不是兩者都需要。 在 C# 7 中,如果使用“_”作為變量名,編譯器將優化 object 代碼以根本不創建變量。 如果您不需要 output 變量(您只是想知道解析是否成功),您可能會有這樣的結構:

if (Int32.TryParse(input, out _)) 

或者,如果您不關心解析成功,只關心 output 變量,您可以將其分配給 _ ,如下所示:

_ = Guid.TryParse(input, out Guid id);

下划線本身就是一個合法的變量名,所以你可以馬上開始使用這個模式。 早期版本的 C# 只會創建一個具有該名稱的新變量,而不是優化 object 代碼,但您將與您自己和您的其他開發人員交流該變量對您的代碼的 ZC1C425268E68385D1AB5074C17A94F1 不重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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