代码之家  ›  专栏  ›  技术社区  ›  Scott Vercuski

代码分析回来时提出了不使用“out”参数的建议

  •  5
  • Scott Vercuski  · 技术社区  · 15 年前

    我针对我创建的对象运行了VS2008代码分析工具,并收到了以下建议…

    警告147 CA1021:Microsoft.Design :考虑不 要求“返回值”为out 参数。

    我发现“找出”参数非常有用,并且没有意识到它们被认为是不赞成设计实践的。我想知道是否有人能解释一下我收到这个警告的原因?如果是不好的做法?为什么?那么什么是好的练习呢?

    我很感激你的建议。

    4 回复  |  直到 15 年前
        1
  •  10
  •   Mark Seemann    15 年前

    每个代码分析警告都有相关的文档,您可以通过突出显示警告并按 一层楼 .您也可以右键单击该项目以获得帮助。

    无论如何,这是 documentation that explains that particular warning .

    我想说,在某些情况下,out参数仍然是一个很好的选择——特别是当涉及到色组编码习语时,因为它是一种公认的方法,大多数人都应该理解它。

    然而,在一般情况下,对于多个返回值有更好的、更面向对象的解决方案。

        2
  •  4
  •   user151323    15 年前

    我曾经对我的项目运行过代码分析。我也得到了很多有见地的建议,我很快就把它关掉了。许多建议都是宗教性质的,你可以这样或那样做,一个风格的问题,并不是一个坏做法。

    根据你的情况。如果只有一个返回参数,则将其从函数中返回。

    如果您还有一个返回代码占用返回位置,那么考虑使用异常通知调用方操作错误代码。

    如果要返回许多彼此密切相关的参数,请创建一个类/结构,将它们组合在一起并作为包返回。

        3
  •  3
  •   Dr Herbie    15 年前

    在我看来,许多代码分析警告与编写第三方将使用的API代码有关。使用“out”参数的规则是一个典型的例子:不使用它们的部分原因是因为许多其他程序员不知道它们。

    如果它们与您所写的不匹配,那么关闭不适合您的代码分析规则。 我个人倾向于关闭命名、可移植性和互操作性规则,因为它们与我编写的代码类型无关。

        4
  •  2
  •   Frederik Gheysels    15 年前

    在我的大多数项目中,我都关闭了这个特定的警告。 因为,我知道,当我使用out参数时,我有很好的理由这样做,因为我试图完全避免它们。

    我可以想象,当在一个项目中与多个人一起工作时,如果你想做一些代码检查,你可能希望打开这个警告…