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;坏做法
基础教程推荐
- 如何激活MC67中的红灯 2022-01-01
- MS Visual Studio .NET 的替代品 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- c# Math.Sqrt 实现 2022-01-01
- 将 XML 转换为通用列表 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- rabbitmq 的 REST API 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01