আমি কয়েক মুদ্রণ প্রস্তাব দেব। তাদের মধ্যে কিছু একে অপরের বিরোধিতা করে। তবে সম্ভবত কিছু দরকারী।
পতাকা বনাম তালিকা বিবেচনা করুন
আপনি বিশ্বজুড়ে পুনরাবৃত্তি করতে পারেন এবং পতাকা-জিনিসটি করবেন কি না তা সিদ্ধান্ত নিতে প্রতিটি আইটেমের একটি পতাকা চেক করতে পারেন। অথবা আপনি কেবল সেই আইটেমের একটি তালিকা রাখতে পারেন যা পতাকা-জিনিসটি করা উচিত।
তালিকা এবং গণনা বিবেচনা করুন
আপনি আপনার আইটেম শ্রেণিতে বুলিয়ান ক্ষেত্রগুলি যুক্ত করতে পারেন, এটি এবং ইসাথ। অথবা আপনার কাছে স্ট্রিং বা এনাম উপাদানগুলির একটি তালিকা থাকতে পারে, যেমন {"ইসাথস", "ইসাথ্যাট"} বা {আইএস_এ_টিআইএস, আইএস_এ_থ্যাট}} এই ক্ষেত্রটি যুক্ত না করে আপনি গণনায় নতুন (বা স্ট্রিং কনসেট) যুক্ত করতে পারেন। ক্ষেত্রগুলি যুক্ত করার সাথে সত্যিই কিছু ভুল নেই ...
ফাংশন পয়েন্টার বিবেচনা করুন
পতাকা বা এনামগুলির তালিকার পরিবর্তে বিভিন্ন আইটেমের জন্য বিভিন্ন আইটেমটির জন্য কার্যকর করার ক্রিয়াগুলির একটি তালিকা থাকতে পারে। (সত্তা পর ...)
বস্তু বিবেচনা করুন
কিছু লোক ডেটাচালিত, বা স্ক্রিপ্টড বা উপাদান উপাদান সত্তার পদ্ধতির পছন্দ করে। তবে পুরানো ফ্যাশনযুক্ত অবজেক্টের শ্রেণিবিন্যাসগুলিও বিবেচনার জন্য। বেস ক্লাসটির ক্রিয়াগুলি গ্রহণ করা দরকার, যেমন "টার্ন-ফেজ বিয়ের জন্য এই কার্ডটি খেলুন" বা যাই হোক না কেন। তারপরে প্রতিটি ধরণের কার্ড ওভাররাইড এবং যথাযথ প্রতিক্রিয়া জানাতে পারে। সম্ভবত কোনও প্লেয়ার অবজেক্ট এবং গেমের অবজেক্টও রয়েছে, সুতরাং গেমটি এমন কিছু করতে পারে, যদি (প্লেয়ার-> isAowedToPlay ()) the খেলাটি করুন ...}}
ডিবাগ-ক্ষমতা বিবেচনা করুন
পতাকা ক্ষেত্রগুলির গাদা সম্পর্কে একবার দুর্দান্ত জিনিসটি হ'ল আপনি প্রতিটি আইটেমের অবস্থা একইভাবে পরীক্ষা করতে এবং মুদ্রণ করতে পারবেন। যদি রাষ্ট্রটি বিভিন্ন ধরণের, বা উপাদানগুলির ব্যাগ, বা ফাংশন পয়েন্টারগুলি দ্বারা প্রতিনিধিত্ব করা হয় বা বিভিন্ন তালিকায় থাকে তবে কেবলমাত্র আইটেমের ক্ষেত্রগুলি দেখার জন্য এটি যথেষ্ট নাও হতে পারে। এটা সব বাণিজ্য।
শেষ পর্যন্ত, রিফ্যাক্টরিং: ইউনিট পরীক্ষা বিবেচনা করুন
আপনি আপনার আর্কিটেকচারকে কতটা সাধারণীকরণ করুন না কেন, আপনি এমন বিষয়গুলি কল্পনা করতে সক্ষম হবেন যা এটি আবৃত করে না। তারপরে আপনাকে রিফ্যাক্টর করতে হবে। হয়তো কিছুটা, হয়তো অনেক কিছু।
এই নিরাপদ করার একটি উপায় বডি ইউনিট পরীক্ষার সাথে। এই ভাবে আপনি আত্মবিশ্বাসী হতে পারেন যে আপনি নীচে জিনিসগুলি পুনরায় সাজিয়ে নিলেও (সম্ভবত অনেক কিছু!) বিদ্যমান কার্যকারিতা এখনও কাজ করে। প্রতিটি ইউনিট পরীক্ষা সাধারণত দেখতে লাগে:
void test1()
{
Game game;
game.addThis();
game.setupThat(); // use primary or backdoor API to get game to known state
game.playCard(something something).
int x = game.getSomeInternalState;
assertEquals(“did it do what we wanted?”, x, 23); // fail if x isn’t 23
}
আপনি দেখতে পাচ্ছেন, গেমের (বা প্লেয়ার, কার্ড, এবং সি) স্থিতিশীল API শীর্ষস্থানীয় এপিআই কলগুলি ইউনিট পরীক্ষার কৌশলটির মূল চাবিকাঠি।