私は数日間、設計上の問題(臭いコードのようなもの)をうろついています。多分あなたが助けることができます。ASP.NET MVC:醜いコードはリファクタリングを必要とします(3つの値を返す)
私は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/breeding/brooding。繁殖は全く別のものです;)。実際、そこにはあなたのためにそれを固定しています。 –
あなたは正しいです、ありがとうJoel :) – Alex