एक सामान्य प्रश्न के बावजूद मेरा दायरा C # है क्योंकि मुझे पता है कि C ++ जैसी भाषाओं में कंस्ट्रक्टर निष्पादन, स्मृति प्रबंधन, अपरिभाषित व्यवहार आदि के बारे में अलग-अलग शब्दार्थ हैं।
किसी ने मुझसे एक दिलचस्प सवाल पूछा जो मेरे लिए था आसानी से जवाब नहीं दिया गया।
क्यों (या यह बिल्कुल भी है?) एक वर्ग के एक निर्माता को कभी न खत्म होने वाले लूप (यानी गेम लूप) शुरू करने के लिए खराब डिजाइन के रूप में माना जाता है?
कुछ अवधारणाएँ हैं जो इससे टूट जाती हैं:
- कम से कम विस्मय के सिद्धांत की तरह, उपयोगकर्ता को उम्मीद नहीं है कि निर्माता इस तरह का व्यवहार करेगा।
- इकाई परीक्षण कठिन हैं क्योंकि आप इस वर्ग को नहीं बना सकते हैं या इसे इंजेक्ट नहीं कर सकते हैं क्योंकि यह लूप से बाहर नहीं निकलता है।
- लूप का अंत (गेम एंड) तब वैचारिक रूप से वह समय होता है जहां कंस्ट्रक्टर खत्म हो जाता है, जो विषम भी है।
- तकनीकी रूप से इस तरह के वर्ग में कंस्ट्रक्टर को छोड़कर कोई सार्वजनिक सदस्य नहीं है, जिससे यह समझना मुश्किल हो जाता है (विशेषकर उन भाषाओं के लिए जहां कोई कार्यान्वयन उपलब्ध नहीं है)
और फिर तकनीकी मुद्दे हैं:
- कंस्ट्रक्टर वास्तव में कभी खत्म नहीं होता है, इसलिए यहां जीसी के साथ क्या होता है? क्या यह वस्तु पहले से ही Gen 0 में है?
- इस तरह के एक वर्ग से प्राप्त करना असंभव है या कम से कम इस तथ्य के कारण बहुत जटिल है कि बेस कंस्ट्रक्टर कभी नहीं लौटता है
क्या इस तरह के दृष्टिकोण के साथ कुछ और स्पष्ट रूप से बुरा या कुटिल है?
while(true)
प्रॉपर्टी सेटर में लूप डालना क्यों एक बुरा विचार है new Game().RunNow = true
:?
var g = new Game {...}; g.MainLoop();