【问题标题】:.Net Full qualified name for variable type.Net 变量类型的完整限定名
【发布时间】:2010-08-17 18:03:13
【问题描述】:

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

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

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

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

并且在顶部有一个导入。

您对此有何看法?有哪些最佳做法?两者的优缺点是什么?我怎样才能说服我的队友?

我发现第二个选项更清楚。

【问题讨论】:

    标签: .net code-standards


    【解决方案1】:

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

    【讨论】:

    • 同意。有时,如果名称在两个 using 指令之间不明确,则名称可能是完全限定的,但这也可以通过指令中的别名来解决。别名和完全限定名称之间的选择留给开发人员,对于支持该代码的人来说,哪个更清晰和自然。
    • 这带来了一个有趣的后续问题:为什么自动生成的代码不能使用using 指令?会不会过敏?
    • @Jesse:我不确定为什么设计师不倾向于使用指令生成。如果他们也这样做,我会喜欢它......
    • @Jesse:以防命名冲突。 (例如,如果您的命名空间有一个与标准 .Net 类名冲突的类)
    • @SLaks:嗯。一个好点。我现在开始思考这个问题。如果有一个快乐的媒介就好了。仅 xsd.exe 的输出就让我感到畏缩。
    【解决方案2】:

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

    但这也取决于全名的长度。一切都是为了编写漂亮、易于阅读的代码。

    【讨论】:

      【解决方案3】:

      除了少数情况外,我会说,importusing 命名空间是最佳实践。这具有提前降级的额外优势:如果找不到命名空间,编译器会报错。

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

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

      【讨论】:

        猜你喜欢
        • 2016-02-29
        • 1970-01-01
        • 2012-02-16
        • 2021-03-19
        • 1970-01-01
        • 2019-12-14
        • 1970-01-01
        • 2021-05-09
        • 1970-01-01
        相关资源
        最近更新 更多