2016-11-17 37 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'命名空间中添加一个新类,那么事情可能会有所不同,那么一致性可能会胜过形式化。但是这是在一个名称空间内。 (我不知道微软的本地政策。) –