TDDを使用してMVCサイトを構築しています。サービス層で入力を検証するにはどうすればよいですか
私はPOCOクラスのCRUD操作を処理するために、リポジトリとサービスレイヤの作成を開始しました。
コントローラーコードはまだ書いていませんし、ページにフォームの値などをポストしてコントローラーに送り、タイプに変換せずにそのままサービスレイヤーに渡すことを考えていました。
var content = ContentSevice.CreateContent(name: ValidContentName, contentTypeId: ValidContentTypeId, languageId: ValidLanguageId, author: ValidAuthor);
言語やコンテンツの種類などのオブジェクトを作成する管理サービスもあります。
これらのメソッドへの入力を検証すると、そのオブジェクトの作成メソッドと編集メソッドの間で多くの情報が複製されます。一部のパラメータはユニークですが、
繰り返しコードを保存するには、共通部分の検証方法を抽出します。これは単にValidateLanguageNameとValidatePropertyTypeNameなどがあることを意味します。
これはこの匂いがします。
オブジェクトの入力を検証するにはどうすればよいですか?私はLanguageValidatorのようなオブジェクトごとにいくつかの他のサービスやクラスを考えていましたか?
パラメータはクライアント側で検証を使用しますが、コントローラーでもサービスレイヤで検証したいと思いますが、これはコードがTDDの観点から判明したもので、コントローラメソッドタイプを知る必要があります。
サービス層を持つ目的を破るのは、すべての私のビジネスロジックがそこにあります。 –
まったく反対ではなく、貧血ドメインモデルと呼ばれる反パターンがあります。http://martinfowler.com/bliki/AnemicDomainModel.htmlおよびこちらhttp://en.wikipedia.org/wiki/ Anemic_domain_model –
変更が必要になった場合は、コードベースを一度に改訂しないでください。少しずつリファクタリングしてください。 –