SQLテーブルに裏打ちされた製品リストがあるとします。これは大きなデータモデルです(簡潔にするためにここでは切り捨てられています)が、次のようになっているとしましょう。
public class Product {
public int Id { get; set; }
public int Number { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public decimal Cost { get; set; }
public int UnitsOnHand { get; set; }
public int Ordinal { get; set; }
public int Sku12 { get; set; }
public string Color { get; set; }
public Vendor Vendor { get; set; }
public Image PrimaryImage { get; set; }
public User CreatedBy { get; set; }
public DateTime CreatedOn { get; set; }
public ICollection<Image> Images { get; set; }
public ICollection<Category> Categories { get; set; }
public ICollection<Coupon> Coupons { get; set; }
public ICollection<Tag> Tags { get; set; }
public ICollection<ProductOption> Options { get; set; }
}
次のように、コレクションに返されるProduct
の小さなサブセットのみが必要な製品リスト(インデックス)ページのようなものに夢中になっています。
public class ProductBasic {
public int Id { get; set; }
public int Number { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public int UnitsOnHand { get; set; }
}
public ActionResult SearchProducts(string keyword) {
IEnumerable<ProductBasic> result = _productService.Search(keyword);
return View(result);
}
目的のエンティティの詳細ページが選択される前にテーブル/グリッドを構築でき、忠実度の高いProduct
が返され、関連するImage
、Category
、Coupon
、Tag
、およびProductOption
コレクション(FKレコード)を含む十分なデータ。
これらのオブジェクトは同じ物理テーブルを表すため、命名規則と最初のコードの処理の両方に苦労しています。つまり、データベースにProductBasic
を作成する必要はありません。
私の意図は、詳細なオブジェクトが必要になるまで、コレクションをクライアントに送信するための軽量のオブジェクトを用意することです。このような小さなサブセットデータモデルの標準的な命名規則は何ですか?私はProductBasic
、ProductStub
、ProductRoot
、ProductSnip
、およびProductShort
をいじくり回しています。
次に、Product
は私のテーブルを表し、最初にProductBasic
をコードから除外する必要があります。
疑わしい場合は、ドメインの専門家を満足させる名前を使用してください。
未来への旅に出ましょう。あなたは今誕生日を迎えました。休暇を取った。そして、さらに5つの驚くべきことをコード化しました。今、あなたの上司があなたのところに来て、インデックスページに表示するベンダーが必要だと言います。あなたはそれを生成するコードは言うまでもなく、そのページが存在することさえ忘れています。したがって、幸運を祈って「IndexPage」というフレーズをコードベースで検索します。
今、何と名付けたいですか?