2016-11-17 32 views
1

爲什麼System.Text.Encoding.UTF8屬性的名稱全部大寫?根據Capitalization Rules for Identifiers和UTF是超過2個字符的縮寫這一事實,該屬性應該被命名爲System.Text.Encoding.Utf8或者我錯了嗎?標識符和屬性的.NET大寫規則System.Text.Encoding.UTF8

+0

我覺得很簡單的原因是,不是每個人都知道所有的規則,或者也許是在規則寫下來之前作出的決定。 –

+0

可能會爲智能感知提供更多賣點!或者更可能是因爲這是傳統寫法是unicode符號的方式:https://en.wikipedia.org/wiki/Unicode – enricoariel

回答

1

這是全部大寫,因爲它是這樣編寫的。

.NET 1.0(和Encoding.UTF8一直回到那裏)的設計和實現早於當前形式的框架設計指南,更不用說它們的實施了。因此,您可以在這些指導方針的框架內發現大量違規行爲。一個小例子:

  • System.Security.Cryptography.RNGCryptoServiceProvider(和很多其他類的System.Security.Cryptography
  • System.Text.ASCIIEncoding
  • System.Runtime.InteropServices.COMException

而系統的搜索可能會出現更多。

這並不像看起來那麼愚蠢:人們首先提出準則的原因是因爲他們注意到了這種不一致之處,然後坐下來想出一套最能反映當前情況的規則實踐。但是,要回過頭來改變現有類的大寫字母(並打破流程中的現有軟件)是不值得的。

+0

對於新類,建議遵循指導原則,即使正確的名稱如'Utf8'或'Ascii'在不正確的旁邊看起來很奇怪? –

+0

@RadekMicek:「看起來很奇怪」不是你可以正式化的東西,所以是的。在您自己的類中拼寫'ASCII'沒有任何必要的理由,因爲框架中也存在'ASCIIEncoding'類。想象一下,如果有人需要跟蹤所有的異常情況會有多麼不方便 - 對於任何你想創建的類,你都必須先檢查框架!現在,如果你是在現有的'System.Text'命名空間中添加一個新類,那麼事情可能會有所不同,那麼一致性可能會勝過形式化。但是這是在一個名稱空間內。 (我不知道微軟的本地政策。) –