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 Sensorlớ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), SensorInfosẽ 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 SensorInfotiê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 Employeelớ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 EmployeeInfothay 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:
DirectoryvàDirectoryInfocác lớp học;FilevàFileInfocác lớp học;ConnectionInfolớp (không cóConnectionlớp phóng viên );DeviceInfolớp (không cóDevicelớ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 ( Thingvà ThingInfo) và các trường hợp khác chỉ tồn tại ThingInfolớp hoặc Thinglớ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.
Employeeví 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ó.

Infohậu tố phân biệt mộtstaticlớ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 raFileUtilityvàFile, nhưngFile.DoSomething()vàFileInfo.FileNamedường như đọc tốt hơn.