我一直沉迷於一個設計問題(臭編碼有點事情)幾天了。也許你可以幫忙。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