c# – 使用’Common Type System’作为编码标准

我们的编码标准“规则”之一是:

  • Use the common type system. For example, use Int32 instead of int.

我之前没有看过类似的规则,虽然我们的其他指南大致基于微软的Design Guidelines Digest.它看起来也不像Common Type System那样.

我觉得不方便,因为我最终不得不重写默认的Visual Studio和ReSharper重构将字符串转换为String,float转换为Single,long转换为Int64等.
它也被相当不一致地应用(例如,不是对象到对象),可能是由于它的不便,并且没有StyleCop规则来检查它是否被应用.

因此,我想知道为什么要制定这条规则.可能有充分的理由吗?是否有任何情况(可能是历史的)必须使用Int32而不是int?

更新:

我阅读了推荐的框架设计指南(2006,Cwalina& Adams)第3.2.3节避免使用特定于语言的名称,并指出“避免在标识符中使用这些特定于语言的类型名称很重要”(我的重点) .同意.

然而,杰弗里里希特继续发表评论“我更进一步,从不使用该语言的别名[因为它]没有增加任何价值,并引入了巨大的混乱”.
也许这就是这条规则的来源?

解决方法:

我怀疑这条规则来自对框架指南的误解.

准则在General Naming Conventions部分说:

Do use a generic common language runtime (CLR) type name, rather than a language-specific name, in the rare cases when an identifier has no semantic meaning beyond its type.

For example, a method that converts data to Int16 should be named ToInt16, not ToShort because Short is the language-specific type name for Int16.

如果您创建包含类型作为其名称一部分的标识符,例如一组SomeType ReadSomeType()方法,那么您应该使用SomeType的实际类型名称而不是C#别名.

以不同语言工作的程序员可能会将不同的含义与类型联系起来.例如,如果你有一个ReadFloat()方法,C#程序员会认为它返回System.Single,而一个F#程序员会认为它返回System.Double.所以你应该把它命名为ReadSingle或ReadDouble.

此规则不适用于您在代码中引用类型的简单类型名称.使用您的库的程序员永远不会看到您使用的库.

上一篇:java – CLR和JVM中动态类型的不同方法


下一篇:c# – 防止Thread.CurrentPrincipal跨应用程序域传播