ASP.net MVC (必ずしも MVC に限定されるわけではなく、例にすぎません) では、以下のようなアクション メソッドに常に前提条件があります。
[HttpPost]
public ActionResult Edit(FooModel viewModel)
{
if (viewModel == null)
{
throw new ArugmentNullException("viewModel");
}
if (viewModel.Foo < 1)
{
throw new InvalidOperationException();
}
// Perform real tasks on viewModel (e.g. map it to model, persist to database)
}
これで、チェックをリポジトリ クラスの静的メソッドにリファクタリングできることがわかりました。
[HttpPost]
public ActionResult Edit(FooModel viewModel)
{
if (FooModelRepostory.IsValid(viewModel)
{
}
// Perform real tasks
}
でFooModelRepository.cs
:
public static bool IsValid(FooModel viewModel)
{
if (viewModel == null)
{
throw new ArgumentNullException("viewModel");
}
if (viewModel.Foo < 1)
{
throw new InvalidOperationException();
}
// ...many more checks and throw exceptions accordingly
// if we reach up to here, we are good, return true
return true;
}
私の質問は、このようなチェックでリポジトリを乱雑にすることなく、コードをリファクタリングするためのより良い方法はありますか?