2012-08-24 444 views
5

例如,這是一個很好的做法嗎?命名屬性是對象的最佳做法是什麼?

private SalesOrder salesOrder; 

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

或者我應該始終添加使用對象或BusinessObject的對象屬性來區分物業本身的屬性類型:

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

如果該屬性是一個網頁或部分不要緊目的?

+0

在這種情況下,我正在考慮它實際上是一個用戶控件。該控件被稱爲SendEmail.ascx。那麼這個用法會讀取'SendEmail。訂單' – Will

+0

然後你應該將UI與業務邏輯分開,創建一個'Sale'類(或其他)。 –

+0

是的。 SalesOrder是一個完全獨立的類,擁有自己的一組屬性和數據訪問方法,我使用此屬性來跟蹤回發中的SalesOrder。 – Will

回答

2

後者是可怕的。它建模具有銷售訂單的東西,而銷售訂單又由對象建模 - 不建模具有銷售訂單對象的東西。

「BusinessObject的」只應該在你的代碼的東西的名稱,如果你正在寫一個工具,開發人員,幫助他們處理業務對象。

前者往往是不錯的。

如果可能有多個SalesOrder即使一個是「主」,也會引起混淆。然而一個SalesOrders屬性,該屬性是SalesOrder對象的枚舉或收好(當英文複數是不是「S」奇異+形式,使用真正的複數而不是僅僅加入S,除非它是一個情況下英文複數是一樣的奇異

這是不到偉大的,當一切是與銷售相關的EG,這是可怕的:。

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

該類是一個用戶控件,與'SalesOrder'具有1:1關係的SendEmail。 – Will

+0

那麼我可能會用'SalesOrder'去。班級是什麼?代表銷售訂單。什麼是財產?控制正在處理的銷售訂單。這兩個問題都表明了「銷售訂單」的答案,並將.NET命名約定應用於這兩種情況下分別給出了「SalesOrder」。 如果有什麼可以批評的話,那就是將動詞「send」應用於某個東西(控件),但它可能是一個完全合理的縮寫。 –

1

不要把類型名稱。類可以在其生命週期中改變意義,並且不希望代碼增長,但不能反映已經改變的內容。這是從ASP時代開始的,當時你用'tbl'作爲表名和'vw'作爲視圖。將屬性命名爲單數或複數,並且保持一致。只是不要把名字放在類裏。如果您希望更準確地反映對象是什麼,請查看域驅動設計,以便您的代碼反映業務而不是程序員認爲的那樣。

相關問題