Các lớp đặt tên: số ít hay số nhiều? [đóng cửa]


58

Tôi luôn luôn khó khăn trong việc lựa chọn giữa các dạng số ít và số nhiều cho các tên lớp:

CustomerRepository vs. CustomersRepository
CustomerService vs. CustomersService
CustomerController vs. CustomersController

Và đối với tên hỗn hợp, nó thậm chí còn khó khăn hơn:

OrderCustomerRep repository so với OrderCustomersRep repository so với OrderCustomersRep repository

Cách tiếp cận nào bạn thích và tại sao?


Lớp học có chứa một kho lưu trữ cho nhiều khách hàng không? Nếu đó là một kho lưu trữ cho một khách hàng ...
JeffO

2
@Jeff O, kho lưu trữ có thể chứa các phương thức GetCustomerById và GetCustomers cùng một lúc
SiberianGuy

2
Trong Mô hình hóa dữ liệu, tên bảng phải là số ít. Nếu ứng dụng của bạn đang sử dụng các lớp miền tương ứng 1-1 với mô hình dữ liệu của bạn thì có thể nên giữ tên số ít. Tất nhiên các lớp ánh xạ tới các bảng theo kiểu 1-1 có thể không phải là cách tốt nhất để xây dựng mô hình đối tượng của bạn cho một ứng dụng OO, nhưng điều này nằm bên cạnh câu hỏi.
NoChance

Câu trả lời:


73

Điều duy nhất tôi số nhiều là các bộ sưu tập.

foreach (var customer in customers)
{
    // do something with customer
}

Tất cả các ví dụ của bạn là các đối tượng riêng lẻ, vì vậy chúng không được số nhiều. Đúng, tên liên quan đến các đối tượng có thể có nhiều trường hợp, nhưng tất cả những gì bạn cần biết trong tên là thực thể đối tượng (tức là khách hàng).

Vì vậy, trong tất cả các ví dụ của bạn, số ít là hình thức chính xác. Làm cho cuộc sống dễ dàng hơn nhiều.


2
Tôi sẽ sử dụng customerCollectioncho các bộ sưu tập, nhưng đối với phần còn lại của nó, tôi đồng ý. Đây là một cách thực hành tốt nhất trong thiết kế cơ sở dữ liệu và cũng hoạt động khá tốt trong mã.
Jan_V

12
Tôi không thích những từ như "Bộ sưu tập" ở đây. Tiếng Anh có một cách hoàn toàn tốt để đề cập đến một bộ sưu tập các thứ, sử dụng số nhiều.
Gort Robot

Thay vì Collectionthế nào Iterator?
Julian

@Julian An Iteratorsẽ là một loại đồng quy chứ không phải là cấu trúc dữ liệu để chứa nhiều đối tượng, phải không?
Wilson

64

Sử dụng số ít. Công cụ để vặn ốc vít được gọi là "trình điều khiển vít" chứ không phải "trình điều khiển vít".

Tuy nhiên, số nhiều tên phương thức và thuộc tính của bạn tương ứng, để cho biết liệu một giá trị hoặc một tập hợp của chúng sẽ được trả về.


7

Chắc chắn là số ít. Bạn không tạo một đối tượng People, bạn tạo một bộ sưu tập các Personđối tượng. Lần duy nhất tôi sẽ sử dụng số nhiều sẽ là cho các lớp học tĩnh, tức là SupportServices, StringUtilsvv Tuy nhiên trong trường hợp này, lớp hành vi nhiều hơn như một không gian tên hơn bất cứ điều gì khác.


1
Và để suy nghĩ, tất cả thời gian này tôi đã sử dụng các bộ sưu tập của mọi người!
Jordan

2
Danh sách <người> người ... có vẻ ổn với tôi, @Jordan.
StevenV

1

Hãy nhớ rằng, một lớp là một mẫu cho một đối tượng. Vì vậy, hãy suy nghĩ về đối tượng mà bạn đang đề cập đến.

Thường thì nó là một thực thể đơn lẻ, đặc biệt khi nó là một thực thể ORM. Đôi khi nó có thể là một bộ sưu tập.

Tôi tin rằng câu trả lời là cụ thể cho bối cảnh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.