.Net变量类型的完全限定名称

时间:2010-08-17 18:03:14

标签: .net code-standards

在我工作的地方,我经常看到这样的代码:

public void Test(Models.User.UserInfo userInfo, Models.User.UserParameter param)
   { ... }

就个人而言,我更喜欢看到类似的东西:

public void Test(UserInfo userInfo, UserParameter param) { ... }

并在顶部有一个导入。

您对此有何看法?最佳做法是什么?两者的利弊是什么?我怎么能说服我的队友?

我发现第二种选择更加明确。

3 个答案:

答案 0 :(得分:5)

绝对使用using指令IMO。通常,这只是Visual Studio自动生成的代码。我没有看到有人故意手动编写这样的代码。 IMO值得确保人类将阅读的所有代码看起来像人类一样 - 因此我将添加using指令并在此处减少名称。它使阅读更容易 - 特别是当名称空间很长时。

答案 1 :(得分:0)

如果类型仅在代码文件中使用一次或两次,我倾向于使用完全限定名称。对于其他一切,我使用using

但这也取决于全名的长度。这就是编写漂亮,易于阅读的代码。

答案 2 :(得分:0)

除了少数几种情况外,我会说,importusing命名空间是最佳做法。这具有早期降级的额外优势:如果找不到命名空间,编译器会抱怨。

在少数需要完全限定名称的情况下(更正确:它不是完全限定,您没有指定版本或密钥)是发生名称冲突的地方(即:当两个名称空间碰巧具有相同的名称时,我发现这种情况经常发生在许多供应商添加到其库中的Util类中(请注意,您可以使用using对别名进行别名)。或者,当您需要将名称限定为字符串时,这是另一个用例(即带反射)。有时,在调试时,使用FQN会有所帮助,因为调试器不允许添加using指令。

如果您只使用一次名称,您可能会想要使用FQN,但根据我的经验,您很快就会发现自己使用了多个命名空间名称并将其重构为导入命名空间报头中。