Is using quot;outquot; bad practice(正在使用OUT;OUTQOOT;坏做法)
问题描述
我刚刚将out布尔参数添加到我编写的方法中,以便在我的UI中收到警告。我使用了Out,而不是让方法本身返回FALSE/TRUE,因为这意味着DoSomething失败/成功。我的想法是,warnUser将指示警告的实际内容,而不必查看方法的实现。
原始代码
public void DoSomething(int id, string input);
新代码
public void DoSomething(int id, string input, out bool warnUser);
我正在使用Moq测试此代码,但它不支持out/ref参数,因为Lambda表达式不支持它们
测试代码
mockService.Verify(It.IsAny<int>(), It.IsAny<string>(), It.IsAny<bool>());
那么,使用Out参数是不好的做法吗?如果是,我应该怎么做?
推荐答案
在空方法中使用Out参数通常不是一个好主意。你说你已经使用了它,而不是让方法本身返回FALSE/TRUE,因为这会暗示DoSomething失败/成功--我不相信这一含义。在.NET中,故障通常通过异常而不是True/False来指示。
out参数通常比返回值更难看--尤其是必须有正确类型的变量来处理,所以不能只写:
if (DoSomething(...))
{
// Warn user here
}
您可能需要考虑的一种替代方法是使用枚举来指示所需的警告级别。例如:
public enum WarningLevel
{
NoWarningRequired,
WarnUser
}
则该方法可以返回WarningLevel而不是bool。这会让你的意思更清楚--尽管你可能想稍微重命名一些东西。(对于像"DoSomething"这样的元语法名称,我很难给出建议,尽管我完全理解您为什么要在这里使用它。)
当然,另一种选择是您可能希望显示更多信息--例如警告的原因。这可以使用枚举来完成,或者您可能希望完全提供一些更丰富的结果。
这篇关于正在使用&OUT;OUT&QOOT;坏做法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:正在使用&OUT;OUT&QOOT;坏做法
基础教程推荐
- 当值可以是对象或空数组时反序列化 JSON 2022-01-01
- 如何使用 .Net 检查 Active Directory 服务器是否已启动并正在运行? 2022-01-01
- 如果有人提交恶意软件Nuget包怎么办? 2022-01-01
- C# 从 List<List<int>> 中删除重 2022-01-01
- Moq It.Is<>不匹配 2022-01-01
- WPF 模态进度窗口 2022-01-01
- Azure Functions:CosmosDBTrigger 未在 Visual Studio 中触发 2022-01-01
- .NET SerialPort DataReceived 事件未触发 2022-01-01
- 禁止输入少量字符,例如'<'、'&a 2022-01-01
- 我应该在后面的代码中直接使用 Linq To SQL 还是使 2022-01-01
