2009-07-02 16 views
19

câu hỏi đơn giản thực sự, tôi đã muốn biết những gì quy ước đặt tên ai đặt trên đó DTO/POCOS ....tiền tố DTO/POCOS - quy ước đặt tên?

Tôi không thực sự muốn tiền tố như ký hiệu hungarian .. tôi đã đi từ đó !.

Nhưng DTOs tôi đặt tên được đụng độ với tên đối tượng trở về thực tế của tôi và mặc dù họ đang ở trong một không gian tên khác nhau của nó vẫn còn một chút bối rối ..

tôi đã tự hỏi những gì đặt tên công ước áp dụng cho bất cứ ai nó

cho Ví dụ đối tượng khách hàng của tôi được gọi là khách hàng

và tôi làm một bản đồ để dto ... đó là khách hàng .. Iwas nghĩ DtoCustomer ..

Không chắc

Bất kỳ ai?

Trả lời

20

Tôi thích sử dụng không gian tên cho việc này. Sử dụng bí danh không gian tên cho điều này làm cho nó rõ ràng hơn.

Điều này sẽ làm cho mã trông giống như:

Customer myCustomer = new Customer(); 
Dto.Customer dtoCustomer = ....; 

Nếu tôi làm việc hoàn toàn trong lớp DTO, tôi vẫn có thể làm việc với các "khách hàng" vào thời điểm này.

+0

Có tôi đã thông qua điều này cuối cùng, tôi có mô hình của tôi trong các mô hình không gian tên và dtos của tôi trong dto .. cảm ơn –

+0

Điều đó chưa bao giờ xảy ra với tôi. Tuyệt vời. Tôi thích nó. Tôi muốn một số chi tiết của nó. – Sinaesthetic

+2

đây là một trong những tình huống mà đủ điều kiện với một không gian tên có ý nghĩa và là một sử dụng tốt của nó mọi người.Nhưng nếu không, hãy sử dụng các phát biểu ở đầu các lớp học của bạn và không đủ điều kiện nếu bạn không phải làm như vậy. – PositiveGuy

7

Tôi thích CustomerDo hơn DtoCustomer. Thích sắp xếp chúng cạnh nhau.

Nhưng việc đặt tên cũng có thể phụ thuộc vào việc sử dụng DTO. Ví dụ trong một ASP.NET MVC tôi thường gọi một DTO được gửi đến một khung nhìn cho CustomerViewModel.

2

Tôi thường thêm DTO vào các tình huống như thế này.

13

Theo kinh nghiệm của tôi, DTO thường là tập con hoặc tập hợp dữ liệu mà các thực thể miền của bạn đại diện. Điều này thường là do các thực thể miền là các đối tượng phức tạp, có liên quan cao, phức tạp có cả hành vi và dữ liệu. Như vậy, tôi cố gắng đặt tên cho DTO của tôi để phản ánh càng nhiều càng tốt các tập con của thông tin mà họ đại diện. Trong trường hợp của khách hàng, tôi thường có DTO của được tinh chỉnh với các thông tin được yêu cầu:

  • CustomerHeader
  • CustomerDetail
  • CustomerWithRecentOrders
  • CustomerAndBill

Trong các ví dụ trên , CustomerHeader có thể chỉ chứa ID và Tên khách hàng, thường được sử dụng để hiển thị khách hàng trong danh sách đơn giản. CustomerDetail sẽ chứa hầu hết thông tin khách hàng, nhưng sẽ không chứa bất kỳ thuộc tính quan hệ nào mà thực thể đầy đủ của Khách hàng có thể chứa. Những người khác nên tự giải thích, đó là mục tiêu cuối cùng.

+1

@CoffeeAddict: Nó phụ thuộc vào mục tiêu của bạn. Nếu hiệu suất tốt là một yêu cầu quan trọng, đôi khi bạn phải "bùn nước tinh khiết" của những gì có thể khác là một kiến ​​trúc "lý tưởng" để cải thiện hiệu suất cho những thứ đi qua dây. Nếu bạn có sự sang trọng của việc không sử dụng kiến ​​trúc hướng dịch vụ, DTO dạng hạt là không cần thiết ngay từ đầu. – jrista