2012-08-24 12 views
5

たとえば、これは良い方法ですか?オブジェクトであるプロパティに名前を付けるベストプラクティスは何ですか?

private SalesOrder salesOrder; 

public SalesOrder SalesOrder 
{ 
    get { return salesOrder; } 
    set { salesOrder = value; } 
} 

または私は常にプロパティ自体からプロパティタイプを区別するために、オブジェクトまたはてBusinessObjectを持つオブジェクトのプロパティを追加する必要がありますプロパティは、WebページまたはANの一部である場合

public SalesOrder SalesOrderBusinessObject 
{ 
    get { return salesOrder; } 
    set { salesOrder = value; } 
} 

それは問題ではありませんオブジェクト?

+0

私はその実際のユーザーコントロールを考えていた場合です。コントロールはSendEmail.ascxと呼ばれます。それで、その使用法は 'SendEmail 'を読むでしょう。Order' – Will

+0

次に、ビジネスロジックからUIを分離し、クラス「Sale」(または何でも)を作成する必要があります。 –

+0

です。 SalesOrderは、独自のプロパティとデータアクセスメソッドを持つ、完全に別のクラスです。このプロパティを使用して、ポストバック間のSalesOrderを追跡しています。 – Will

答えて

2

後者は恐ろしいです。これは、受注を持つものをモデリングするもので、受注オブジェクトを持つものをモデリングするのではなく、オブジェクトによってモデル化されます。

"BusinessObject"は、開発者がビジネスオブジェクトを処理するためのツールを作成している場合にのみ、コード内の名前でなければなりません。

前者はよくよくあります。

複数の可能性がある場合はうまくいきませんSalesOrder - 「メイン」の場合でも混乱を招きます。しかし、オブジェクトの列挙型またはコレクションであるSalesOrdersプロパティは良いです(英語の複数形が単数形のものでない場合は、sを追加するのではなく、実際の複数形を使用します)。 。英語の複数は単数と同じである

他のすべてが販売関連であるとき、それは素晴らしい未満だ例:これは恐ろしいです。

public class Sale 
{ 
    public SalesOrder SalesOrder{get;set;} 
    public SalesReference SalesReference{get;set;} 
    public decimal SalesValue{get;set;} 
    public string SalesCurrency{get;set;} 
} 

この場合、私はそれぞれの「販売」をカットしたいですクラス名から(必然的に)そうではありません。

しかし、これはより良いケースです:全てにおいて

public class Sale 
{ 
    public SalesOrder SalesOrder{get;set;} 
    public StockOrder StockOrder{get;set;} 
} 

、それにアプローチする方法は次のとおりです。

  1. 他のクラスが行う(したがって、ノー「オブジェクト」何からそれを区別こと、このクラスが何のための最高の名前は何ですか、 "ビジネスオブジェクト"、 "エンティティ"またはそれに類するもの)が含まれます。
  2. 他のプロパティと区別するために、プロパティに反映される最適な名前は何ですか。

特定のケースで同じ名前が与えられると、それは問題ありません(ネストされたクラスでない限り、あいまいで違法です)。彼らが別の名前を与えることになったら、それでいい。

+0

クラスはユーザコントロールで、SendEmailは 'SalesOrder'と1対1の関係を持っています。 – Will

+0

私はおそらく 'SalesOrder'と一緒に行きます。どのようなクラスですか?受注を表すそのプロパティは何ですか?受注を保持するために、コントロールが処理しています。どちらの質問でも、「販売注文」という回答が得られ、両方のケースで「SalesOrder」を別々に与える.NET命名規則を適用します。 批判するものがあれば、それは物(コントロール)に適用される動詞「送信」ですが、完全に合理的な略語である可能性があります。 –

1

名前に型を入れないでください。クラスは生涯にわたって意味を変えることができ、コードの成長は望んでいませんが、変更された内容は反映されません。これは、テーブル名の前に 'tbl'、ビューに 'vw'というプレフィックスを使用したときのASP日間の保留です。プロパティの名前を単数形または複数形にし、一貫性を持たせます。そのクラスの名前を入れてはいけません。そして、オブジェクトが何であるかをより正確に反映させるためには、ドメイン主導の設計を見て、プログラマーが考えるものではなくビジネスをコードに反映させます。

関連する問題