Я уже несколько дней размышляю над проблемой дизайна (вонючий код). Может быть, вы можете помочь.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.
}
Хорошо, позвольте мне объяснить выше кода. Основное возвращаемое значение метода (Boolean) должно указывать вызывающему, был ли успешный запрос на вход. Теперь, если это было успешно, мне нужно перенаправить пользователя на другой Url (таким образом, параметр «out» successRedirectUrl). Если он НЕ был успешным, мне нужно сообщить пользователю, что было не так - таким образом, ValidationDictionary (Modelstate).
Этот код действительно уродливый и трудноудерживающий. Я подумал о том, чтобы избавиться от типа возвращаемого типа Boolean (сразу возвращая SuccessRedirectUrl и проверяя сторону вызывающего, если он пуст), но я почувствовал, что все стало еще более неясным.
Любая идея, как это сделать лучше?
Спасибо!
Я действительно думаю, что вы имеете в виду: s/разведение/задумчивость. Разведение - это совсем другое;). На самом деле, ты его исправил. –
Ха-ха, вы правы, спасибо Joel :) – Alex