Tôi đang làm việc trong một dự án liên quan đến các thiết bị vật lý và tôi đã nhầm lẫn về cách đặt tên đúng cho một số lớp trong dự án này.
Xem xét các thiết bị thực tế (cảm biến và máy thu) là một chuyện, và sự thể hiện của chúng trong phần mềm là một điều khác, tôi đang suy nghĩ về việc đặt tên cho một số lớp với mẫu tên hậu tố "Thông tin".
Ví dụ, trong khi một Sensor
lớp sẽ là đại diện cho cảm biến thực tế (khi nó thực sự được kết nối với một số thiết bị làm việc), SensorInfo
sẽ chỉ được sử dụng để đại diện cho các đặc điểm của cảm biến đó. Ví dụ, khi lưu tệp, tôi sẽ tuần tự hóa một SensorInfo
tiêu đề tệp, thay vì tuần tự hóa một Sensor
, điều này thậm chí sẽ không có ý nghĩa.
Nhưng bây giờ tôi bối rối, bởi vì có một khoảng giữa trong vòng đời của các đối tượng mà tôi không thể quyết định liệu tôi nên sử dụng cái này hay cái khác, hoặc làm thế nào để lấy cái này từ cái khác, hoặc thậm chí cả hai biến thể có thực sự được thu gọn thành một lớp hay không.
Ngoài ra, tất cả các Employee
lớp ví dụ quá phổ biến rõ ràng chỉ là một đại diện của người thật, nhưng không ai có thể đề nghị đặt tên cho lớp EmployeeInfo
thay vào đó, theo như tôi biết.
Ngôn ngữ tôi đang làm việc là .NET và mẫu đặt tên này dường như phổ biến trong toàn khung, ví dụ như với các lớp này:
Directory
vàDirectoryInfo
các lớp học;File
vàFileInfo
các lớp học;ConnectionInfo
lớp (không cóConnection
lớp phóng viên );DeviceInfo
lớp (không cóDevice
lớp phóng viên );
Vì vậy, câu hỏi của tôi là: có một lý do phổ biến về việc sử dụng mẫu đặt tên này? Có trường hợp nào có ý nghĩa khi có các cặp tên ( Thing
và ThingInfo
) và các trường hợp khác chỉ tồn tại ThingInfo
lớp hoặc Thing
lớp mà không có đối tác của nó không?
Foo
, bạn có thể có một lớp tiện ích không thể thực hiện được Foos
. Khi nói đến việc đặt tên, điều quan trọng là tính nhất quán trong API và lý tưởng là các API trên nền tảng.
Employee
ví dụ được tìm thấy bởi hàng tá, trực tuyến hoặc trong các cuốn sách cổ điển, trong khi tôi chưa thấy EmployeeInfo
(có lẽ vì một nhân viên là một sinh vật sống, không phải một cấu trúc kỹ thuật như một kết nối hoặc một tập tin). Nhưng, đã đồng ý, nếu lớp học EmployeeInfo
được đề xuất trong một dự án, tôi tin rằng nó có thể có công dụng của nó.
Info
hậu tố phân biệt mộtstatic
lớp chứa phương pháp hữu ích từ đối tác stateful của nó. Đó không phải là một "thực hành tốt nhất" như vậy; đó chỉ là một cách mà nhóm .NET nghĩ ra để giải quyết một vấn đề cụ thể. Họ có thể có giống như dễ dàng đưa raFileUtility
vàFile
, nhưngFile.DoSomething()
vàFileInfo.FileName
dường như đọc tốt hơn.