2012-08-24 6 views
5

Ví dụ: đây có phải là phương pháp hay không?Cách thực hành tốt nhất để đặt tên các thuộc tính là đối tượng là gì?

private SalesOrder salesOrder; 

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

Hoặc nên tôi luôn gắn với khách sạn để Object hoặc BusinessObject đối tượng để phân biệt các loại tài sản từ tài sản riêng của mình:

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

Có vấn đề gì nếu tài sản là một phần của một trang web hoặc một vật?

+0

Trong trường hợp tôi đã nghĩ về điều khiển thực sự của người dùng. Điều khiển được gọi là SendEmail.ascx. Vì vậy, sau đó việc sử dụng sẽ đọc 'SendEmail.Order' – Will

+0

Sau đó, bạn nên tách giao diện người dùng khỏi logic nghiệp vụ, tạo một lớp 'Bán' (hoặc bất kỳ thứ gì). –

+0

. SalesOrder là một lớp hoàn toàn riêng biệt, với tập hợp các thuộc tính và phương thức truy cập dữ liệu của riêng tôi, tôi đang sử dụng thuộc tính này để theo dõi SalesOrder trên các postback. – Will

Trả lời

2

Cái sau thật khủng khiếp. Nó mô hình hóa cái gì đó có một trật tự bán hàng, mà lần lượt được mô hình hóa bởi một đối tượng - không phải là mô hình hóa một cái gì đó mà có một đối tượng bán hàng.

"BusinessObject" chỉ nên là tên của một cái gì đó trong mã của bạn, nếu bạn đang viết một công cụ cho các nhà phát triển để giúp họ đối phó với các đối tượng kinh doanh.

Trước đây thường tốt.

Không tốt nếu có thể có nhiều hơn SalesOrder - ngay cả khi một trong số đó là "chính", bạn đang giới thiệu sự nhầm lẫn. Tuy nhiên, một thuộc tính SalesOrders là một số đếm hoặc tập hợp các đối tượng SalesOrder là tốt (khi số nhiều tiếng Anh không phải là dạng số ít, sử dụng số nhiều thực thay vì chỉ thêm s, trừ khi đó là trường hợp số nhiều tiếng Anh cũng giống như số ít

Đó là chưa đầy tuyệt vời khi mọi thứ khác là bán hàng liên quan đến Ví dụ này là khủng khiếp:..

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

Trong trường hợp này tôi muốn cắt "bán hàng" từ mỗi tên thuộc tính, nhưng không phải (nhất thiết) từ tên lớp.

Tuy nhiên, đây là trường hợp đẹp hơn:

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

Trong tất cả, con đường để tiếp cận nó là:

  1. gì là tên tốt nhất cho những gì lớp này không, mà phân biệt nó từ những gì các lớp khác làm (và do đó, không có "đối tượng" , "đối tượng kinh doanh", "thực thể" hoặc tương tự trừ khi điều đó thực sự nổi bật là đặc biệt có liên quan trong trường hợp cụ thể).
  2. Tên tốt nhất cho những gì thuộc tính phản ánh, phân biệt nó với các thuộc tính khác.

Nếu chúng kết thúc cho cùng tên trong một trường hợp cụ thể, thì tốt (trừ khi đó là lớp lồng nhau, khi nó mơ hồ và bất hợp pháp). Nếu họ kết thúc bằng một cái tên khác, thì cũng được.

+0

Lớp này là điều khiển người dùng, SendEmail có mối quan hệ 1: 1 với 'SalesOrder'. – Will

+0

Tôi có thể đi với 'SalesOrder' sau đó. Lớp học là gì? Để đại diện cho một đơn đặt hàng. Tài sản là gì? Để giữ lệnh bán hàng, lệnh kiểm soát được xử lý. Cả hai câu hỏi đều đề xuất câu trả lời "lệnh bán hàng" và áp dụng các quy ước đặt tên .NET cho phép 'SalesOrder' tách biệt trong cả hai trường hợp. Nếu có bất cứ điều gì để phê bình, nó sẽ là động từ "gửi" áp dụng cho một điều (một điều khiển), nhưng nó có thể là một từ viết tắt hoàn toàn hợp lý. –

1

Không đặt loại trong tên. Các lớp học có thể thay đổi ý nghĩa trong suốt cuộc đời của họ và bạn không muốn mã của bạn phát triển nhưng không phản ánh những gì đã thay đổi. Đây là sự giữ lại từ những ngày ASP khi bạn sử dụng tiền tố tên bảng với 'tbl' và lượt xem với 'vw'. Đặt tên các thuộc tính là gì, số ít hoặc số nhiều và chỉ nhất quán. Chỉ cần không đặt những gì lớp là trong tên. Và nếu bạn đang tìm cách phản ánh chính xác hơn đối tượng là gì, hãy nhìn vào thiết kế hướng theo miền để mã của bạn phản ánh doanh nghiệp thay vì những gì người lập trình xem xét.