ฉันกำลังทำงานในโปรเจ็กต์ที่เกี่ยวข้องกับอุปกรณ์ทางกายภาพและฉันสับสนว่าจะตั้งชื่อคลาสบางคลาสในโครงการนี้ได้อย่างไร
เมื่อพิจารณาถึงอุปกรณ์จริง (เซ็นเซอร์และตัวรับสัญญาณ) เป็นสิ่งหนึ่งและการเป็นตัวแทนของพวกเขาในซอฟต์แวร์นั้นเป็นอีกสิ่งหนึ่ง
ตัวอย่างเช่นในขณะที่Sensorคลาสจะเป็นตัวแทนของเซ็นเซอร์จริง (เมื่อเชื่อมต่อกับอุปกรณ์ที่ใช้งานจริง) SensorInfoจะถูกใช้เพื่อแสดงเฉพาะคุณสมบัติของเซ็นเซอร์ดังกล่าว ตัวอย่างเช่นเมื่อบันทึกไฟล์ฉันจะทำให้เป็น a SensorInfoถึงส่วนหัวของไฟล์แทนการทำให้เป็นอันดับ a Sensorซึ่งเรียงลำดับของจะไม่ทำให้รู้สึก
แต่ตอนนี้ฉันสับสนเพราะมีวงจรกลางในวงจรชีวิตของวัตถุที่ฉันไม่สามารถตัดสินใจได้ว่าฉันควรใช้อย่างใดอย่างหนึ่งหรืออื่นหรือวิธีการได้รับอย่างใดอย่างหนึ่งหรือแม้กระทั่งว่าตัวแปรทั้งสองควรจะยุบลงในชั้นเดียวเท่านั้น
นอกจากนี้Employeeคลาสตัวอย่างที่ธรรมดาเกินไปก็ชัดเจนว่าเป็นเพียงตัวแทนของบุคคลจริง แต่ไม่มีใครแนะนำให้ตั้งชื่อชั้นเรียนEmployeeInfoแทนเท่าที่ฉันรู้
ภาษาที่ฉันทำงานด้วยคือ. NET และรูปแบบการตั้งชื่อนี้ดูเหมือนจะเป็นเรื่องทั่วไปตลอดทั้งเฟรมเวิร์กสำหรับตัวอย่างของคลาสเหล่านี้:
DirectoryและDirectoryInfoชั้นเรียนFileและFileInfoชั้นเรียนConnectionInfoชั้นเรียน (ไม่มีConnectionชั้นเรียนผู้สื่อข่าว);DeviceInfoชั้นเรียน (ไม่มีDeviceชั้นเรียนผู้สื่อข่าว);
ดังนั้นคำถามของฉันคือ: มีเหตุผลทั่วไปเกี่ยวกับการใช้รูปแบบการตั้งชื่อนี้หรือไม่? มีกรณีที่เหมาะสมหรือไม่ที่จะมีชื่อคู่ ( ThingและThingInfo) และกรณีอื่น ๆ ที่ควรมีอยู่เฉพาะThingInfoคลาสหรือThingคลาสโดยไม่มีคู่
Fooไม่เหมาะสมคุณอาจมีคลาสยูทิลิตี้ที่Foosไม่สามารถใช้งานได้ทันที เมื่อพูดถึงการตั้งชื่อสิ่งสำคัญคือความสอดคล้องภายใน API และนึกคิดข้าม APIs บนแพลตฟอร์ม
Employeeมีตัวอย่างมากมายหลายสิบไม่ว่าจะออนไลน์หรือในหนังสือคลาสสิกในขณะที่ฉันยังไม่ได้เห็นEmployeeInfo(อาจเป็นเพราะพนักงานเป็นสิ่งมีชีวิตไม่ใช่ โครงสร้างทางเทคนิคเช่นการเชื่อมต่อหรือไฟล์) แต่ตกลงถ้าชั้นEmployeeInfoจะเสนอในโครงการฉันเชื่อว่ามันจะมีประโยชน์

Infoต่อท้ายที่แตกต่างstaticระดับที่มีวิธีการยูทิลิตี้จากคู่ stateful ของมัน มันไม่ใช่ "แนวปฏิบัติที่ดีที่สุด" เช่นนี้ มันเป็นเพียงวิธีที่ทีม. NET สร้างขึ้นมาเพื่อแก้ปัญหาเฉพาะ พวกเขาจะได้อย่างง่ายดายเพียงแค่ขึ้นมาด้วยFileUtilityและFileแต่File.DoSomething()และFileInfo.FileNameดูเหมือนจะอ่านดีกว่า