【问题标题】:idesign c# Coding Standards - Using Predefined Typesidesign c# 编码标准 - 使用预定义类型
【发布时间】:2014-05-24 09:02:45
【问题描述】:

我正在查看 iDesign c# 编码标准,发现了一个没有解释但很好奇的规则:

始终使用 C# 预定义类型而不是系统中的别名 命名空间。例如:

object NOT Object
string NOT String
int    NOT Int32

根据我的个人经验,我倾向于使用预定义类型,因为我有更多的 C 背景,但我很好奇为什么这是一个规则。我能想到的唯一理由是,正如“标准”这个名字所暗示的那样,它只是一种使用这种风格的方式,而不是那种风格,这有助于程序员将两者混合在一起(string myString = String.空)。

还有其他我没有看到的原因吗?

谢谢!

【问题讨论】:

  • 由于两者之间没有区别,如果您将intInt32 混合使用,它会给代码的读者增加一层潜在的混淆。对于新手来说,他们可能会假设它们具有不同的语义,而实际上它们并没有。 (另外,int 不需要您导入 System

标签: c# standards-compliance


【解决方案1】:

从嵌入式背景来看,使用 Int32(而不是 int)意味着有人专门编写了代码,目的是用 32 位表示整数值,因此在以后的代码中必须小心可能会扩大或缩小大小。

因此,在 C# 中,如果我使用整数而我没有特定理由指定位大小,我会使用 int。未来的程序员可以决定他们想要一个 int64 而不会破坏任何东西(应始终检查减少位大小)。

至于对象/对象和字符串/字符串,我看到的一些指导方针提倡在您提到类时使用字符串或对象来表示特定对象和字符串/对象。

string cat = "meow";
boolean gotCat = String.IsNullOrEmpty(cat);

【讨论】:

  • 您在整数的 32 位大小上的 cmets 很有意义 - 我猜为什么要在名称中指定大小,对吧?我还看到了您在示例中显示的指南,这也引起了我的质疑;为什么要使用字符串(而不是字符串)来访问 IsNullOrEmpty(cat)?
  • @KevinHumfreville 该指南本质上是说,在使用静态类方法时,使用类名而不是别名。这进一步遵循了一个约定,即类名的首字母大写,但原始类型的首字母大写。
【解决方案2】:

编码标准的一个关键原因是为了保持一致性。 通过执行此标准,您可以确保代码是一致的。

我认为除此之外没有任何理由。就性能而言,字符串和字符串没有区别。

我也同意 Kirk 的观点,人们可能会认为 int 和 Int32 是不同的,并尝试在它们之间进行转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    相关资源
    最近更新 更多