这几天我一直在思考一个设计问题(有点臭的代码)。也许你能帮上忙。
我的 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/