c# - ASP.NET MVC : Ugly code needs refactoring (returning three values)

标签 c# asp.net-mvc refactoring

这几天我一直在思考一个设计问题(有点臭的代码)。也许你能帮上忙。

我的 RegistrationService 中有一个“登录”方法,目前它看起来像这样简化:

public  bool 登录(字符串用户名,字符串密码,
                     out 字符串 successRedirectUrl,
                     out IValidationDictionary validationResults)
{
    successRedirectUrl = "";
    如果(!Validator.IsValid(用户名)||!Validator.IsValid(密码))返回false;

   //其他逻辑
   //分布式登录请求等
   //如果登录成功等,构建重定向 Url
}

好的,让我解释一下上面的代码。该方法的主要返回值( bool 值)应该告诉调用者登录请求是否成功。现在,如果它成功了,我需要将用户重定向到不同的 Url(因此,“out”参数 successRedirectUrl)。如果不成功,我需要在 View 中告诉用户出了什么问题 - 因此是 ValidationDictionary (Modelstate)。

虽然这段代码真的很难看而且很难维护。我想摆脱 Boolean 返回类型(直接返回 successRedirectUrl 并检查调用方是否为空),但我觉得事情变得更加不清楚。

知道如何做得更好吗?

谢谢!

最佳答案

创建一个自定义类来保存所有三个值,并返回它。去掉“out”参数。

关于c# - ASP.NET MVC : Ugly code needs refactoring (returning three values),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1282708/

相关文章:

c# - SQL DELETE(级联 DELETE 与 TRIGGERS 与 "Manual"-DELETE)

c# - 在没有 OleDbConnection 或 Interop 的情况下在 C# 中访问 Excel

c# - ModelState.AddModelError 两次显示错误

refactoring - 如何处理过于复杂的继承代码

c# - 创建动态 iCalendar 订阅源

c# - 在配置源中找不到 Logging 的配置部分

asp.net-mvc - 通过WCF服务实现pager

c# - 啊,对服务层感到如此困惑

c++ - 寻求重新设计界面的建议

visual-studio-2010 - 没有ReSharper的Visual Studio中的“Extract Variable”