ASP.NET MVC:丑陋的代码需要重构(返回三个值)

Ale*_*lex 2 c# asp.net-mvc refactoring

我已经沉思了几天的设计问题(有点臭的代码).也许你可以帮忙.

我的RegistrationService中有一个"登录"方法,目前看起来简化如下:

public Boolean Login(String username, String password, 
                     out String successRedirectUrl, 
                     out IValidationDictionary validationResults)
{
    successRedirectUrl = "";
    if (!Validator.IsValid(username) || !Validator.IsValid(password)) return false;

    // Other logic
    // Distributed login requests etc.
    // Build Redirect Url if login was successful etc.
}
Run Code Online (Sandbox Code Playgroud)

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

这段代码非常难看,但很难维护.我想摆脱布尔返回类型(直接返回successRedirectUrl并检查调用方是否为空)但我觉得事情变得更加不清楚.

知道如何做得更好吗?

谢谢!

Ree*_*sey 9

创建一个自定义类来保存所有三个值,然后返回它.摆脱"出"参数.