সাধারণ প্রশ্ন থাকা সত্ত্বেও আমার ক্ষেত্রটি বরং সি #, কারণ আমি জানি যে সি ++ এর মতো ভাষাগুলিতে কনস্ট্রাক্টর এক্সিকিউশন, মেমরি ম্যানেজমেন্ট, অপরিবর্তিত আচরণ ইত্যাদি সম্পর্কিত বিভিন্ন শব্দার্থবিজ্ঞান রয়েছে aware
কেউ আমাকে একটি আকর্ষণীয় প্রশ্ন জিজ্ঞাসা করেছিলেন যা আমার পক্ষে সহজে উত্তর দেওয়া হয়নি।
কেন (বা এটি আদৌ?) শ্রেণীর একজন নির্মাতাকে কখনও শেষ না হওয়া লুপ (অর্থাত্ গেম লুপ) শুরু করতে খারাপ নকশা হিসাবে বিবেচনা করা হয়?
কিছু ধারণা রয়েছে যা এর দ্বারা ভেঙে গেছে:
- অন্তত বিস্ময়ের নীতি মত, ব্যবহারকারী নির্মাতা এরকম আচরণ করবে বলে আশা করে না।
- ইউনিট পরীক্ষাগুলি আরও শক্ত কারণ আপনি এই শ্রেণিটি তৈরি করতে বা এটি ইনজেক্ট করতে পারবেন না কারণ এটি কখনই লুপ থেকে বের হয় না।
- লুপের শেষ (গেমের শেষ) তখন ধারণাগতভাবে সেই সময় যেখানে কনস্ট্রাক্টর শেষ হয়, যা বিজোড়ও।
- প্রযুক্তিগতভাবে এই ধরণের শ্রেণীর নির্মাতা ব্যতীত কোনও সরকারী সদস্য নেই, এটি বুঝতে অসুবিধা হয় (বিশেষত এমন ভাষাগুলির জন্য যেখানে কোনও প্রয়োগ নেই)
এবং তারপরে প্রযুক্তিগত সমস্যাগুলি রয়েছে:
- কনস্ট্রাক্টর আসলে কখনই শেষ হয় না, তাই এখানে জিসির সাথে কী ঘটে? এই অবজেক্টটি ইতিমধ্যে জেনার 0 তে রয়েছে?
- বেস কন্সট্রাক্টর কখনই ফিরে না আসে এই কারণে এমন শ্রেণি থেকে ডাইভারিং অসম্ভব বা কমপক্ষে খুব জটিল
এরকম পদ্ধতির সাথে আরও স্পষ্টত খারাপ বা বিভ্রান্তিকর কিছু আছে কি?
while(true)
একটি সম্পত্তি সেটার মধ্যে লুপ: new Game().RunNow = true
?
var g = new Game {...}; g.MainLoop();