ฉันกำลังทำงานในโปรเจ็กต์ที่เกี่ยวข้องกับอุปกรณ์ทางกายภาพและฉันสับสนว่าจะตั้งชื่อคลาสบางคลาสในโครงการนี้ได้อย่างไร
เมื่อพิจารณาถึงอุปกรณ์จริง (เซ็นเซอร์และตัวรับสัญญาณ) เป็นสิ่งหนึ่งและการเป็นตัวแทนของพวกเขาในซอฟต์แวร์นั้นเป็นอีกสิ่งหนึ่ง
ตัวอย่างเช่นในขณะที่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
ดูเหมือนจะอ่านดีกว่า