我一直沉迷于一个设计问题(臭编码有点事情)几天了。也许你可以帮忙。ASP.NET MVC:丑陋的代码需要重构(返回三个值)
我有一个“登录”法在我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.
}
好吧,让我上面的代码解释。该方法的主返回值(布尔值)应该告诉调用者登录请求是否成功。现在,如果成功,我需要将用户重定向到不同的Url(因此,“out”参数successRedirectUrl)。如果不成功,我需要在视图中告诉用户哪里出了问题 - 因此是ValidationDictionary(ModelState)。
这段代码虽然很难看,但很难维护。我想摆脱布尔返回类型(直接返回successRedirectUrl并检查调用者方是否为空),但我觉得事情变得更加不清楚。
任何想法如何更好地做到这一点?
谢谢!
我真的认为你的意思是:s /繁殖/育雏。繁殖完全是另一回事;)。事实上,你已经为你解决了这个问题。 – 2009-08-15 20:03:25
哈哈你说得对,谢谢Joel :) – Alex 2009-08-16 06:55:39