แม้ว่าคำถามทั่วไปขอบเขตของฉันจะค่อนข้าง C # เพราะฉันรู้ว่าภาษาอย่าง C ++ มีความหมายที่แตกต่างกันเกี่ยวกับการเรียกใช้คอนสตรัคเตอร์การจัดการหน่วยความจำพฤติกรรมที่ไม่ได้กำหนด ฯลฯ
บางคนถามคำถามที่น่าสนใจซึ่งไม่ได้รับคำตอบสำหรับฉันง่ายๆ
ทำไม (หรือเลยหรือ?) ถือได้ว่าเป็นการออกแบบที่ไม่ดีเพื่อให้ตัวสร้างคลาสเริ่มการวนซ้ำไม่สิ้นสุด (เช่นลูปเกม)
มีแนวคิดบางอย่างที่แตกหักโดยสิ่งนี้:
- เช่นเดียวกับหลักการที่สร้างความประหลาดใจน้อยที่สุดผู้ใช้ไม่คาดหวังว่านวกรรมิกจะทำงานแบบนี้
- การทดสอบหน่วยยากขึ้นเนื่องจากคุณไม่สามารถสร้างคลาสนี้หรือฉีดได้เนื่องจากไม่เคยออกจากลูป
- จุดสิ้นสุดของลูป (จบเกม) เป็นแนวคิดในเวลาที่คอนสตรัคสร้างเสร็จซึ่งก็แปลก
- ในทางเทคนิคแล้วคลาสนี้ไม่มีสมาชิกสาธารณะยกเว้นนวกรรมิกซึ่งทำให้เข้าใจได้ยากขึ้น (โดยเฉพาะภาษาที่ไม่มีการใช้งาน)
แล้วมีปัญหาทางเทคนิค:
- คอนสตรัคเตอร์ไม่เคยเสร็จสิ้นดังนั้นจะเกิดอะไรขึ้นกับ GC ที่นี่? วัตถุนี้มีอยู่แล้วใน Gen 0 หรือไม่
- การได้มาจากคลาสนั้นเป็นไปไม่ได้หรืออย่างน้อยก็ซับซ้อนมากเนื่องจากข้อเท็จจริงที่ว่าคอนสตรัคเตอร์ไม่ส่งคืน
เห็นได้ชัดว่ามีบางสิ่งที่ไม่ดีหรือคดเคี้ยวมากกว่านี้หรือไม่?
while(true)
วงในตั้งค่าคุณสมบัติ: new Game().RunNow = true
?
var g = new Game {...}; g.MainLoop();