我正在查看前同事的帖子。他引用了 article 中的内容。
"In Clean Code Bob Martin disparages output arguments, saying “In general output arguments should be avoided.”
我当前的代码库是 C#。我在一个相当大的应用程序中工作。它主要以程序风格编写,经常违反 SOLID 原则。当我有机会时,我经常会把一些违反单一责任原则的方法分解成单独的方法。有时我会创建带有几个输出参数的方法,如下所示。
var value1 int;
var value2 int;
DoSomeWork(out value1, out value2);
我更喜欢这个而不是创建一个特殊类型,如果创建了一个类型,无论如何都不会重用。这是可以接受的还是有更好的方法?
最佳答案
TL:DR;如果您正在编写高级代码,则不应使用输出参数。
在某些情况下有充分的理由使用输出参数。例如,int.TryParse
是使用输出参数返回第二个值的函数的完美示例。
有人可能会争辩说这样做的原因是效率,因为它不需要构造一个包装器对象来解析一个整数。
另一方面,如果您编写高级代码,您可能应该使用包装这两个值的类或结构。如果您所做的只是返回两个值,您可以使用 Tuple
或编写您自己的几乎没有开销的 struct
。我是说几乎没有开销,因为所有对象创建都会有一些开销。
如果您正在编写一个需要尽可能快地运行的紧密循环,例如某种解析器,您可能会从使用输出参数中获益更多,而不必分配任何过多的对象。
关于c# - 清洁代码 - 输出参数是否错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27204827/