ฉันมักจะพบว่าตัวเองกำลังใช้คลาสที่คงคุณสมบัติสถานะของตัวเองไว้เป็น enum: ฉันมีสถานะ enum และคุณสมบัติสถานะ ONE ของประเภทสถานะ ฉันจะแก้ปัญหาความขัดแย้งของชื่อนี้ได้อย่างไร?
public class Car
{
public enum Status
{
Off,
Starting,
Moving
};
Status status = Status.Off;
public Status Status // <===== Won't compile =====
{
get { return status; }
set { status = value; DoSomething(); }
}
}
ถ้าสถานะ enum เป็นประเภทต่างๆฉันจะวางไว้นอกชั้นเรียนและปัญหาจะได้รับการแก้ไข แต่สถานะใช้กับรถยนต์เท่านั้นดังนั้นจึงไม่สมเหตุสมผลที่จะประกาศ enum นอกชั้นเรียน
คุณใช้หลักการตั้งชื่ออะไรในกรณีนี้?
หมายเหตุ: คำถามนี้มีการถกเถียงกันบางส่วนในความคิดเห็นของคำตอบของคำถามนี้ เนื่องจากมันไม่ใช่หลักคำถามจึงไม่ได้รับการเปิดเผยมากนัก
แก้ไข: Filip Ekberg แนะนำวิธีแก้ปัญหาที่ยอดเยี่ยมของ IMO สำหรับกรณีเฉพาะของ 'สถานะ' แต่ฉันจะน่าสนใจที่จะอ่านเกี่ยวกับการแก้ปัญหาที่ชื่อของ enum / คุณสมบัติที่แตกต่างกันในขณะที่ไมเคิล Prewecki ของคำตอบ
แก้ไข 2 (พ.ค. แต่ฉันมาชอบมากขึ้นเรื่อย ๆ ตอนนี้ฉันใช้มันสำหรับ enums ปกติเช่นกัน