Two Fer

Two Fer

সহজ

ভূমিকা

ইংরেজির কিছু উচ্চারণে, আপনি যখন দ্রুত "two for" বলেন, তখন তা "two fer"-এর মতো শোনায়। Two-for-one বলতে বোঝায় যে আপনি যদি একটি কেনেন, তবে আরেকটি বিনামূল্যে পান। তাই "two-fer" শব্দবন্ধটি প্রায়ই একটি two-for-one অফার বোঝায়।

ভাবুন একটি বেকারি, যেখানে ছুটির একটি অফার আছে: আপনি একটির দামে দুটি কুকি কিনতে পারেন ("two-fer one!")। আপনি অফারটি নেন এবং (খুবই উদারভাবে) বাড়তি কুকিটি লাইনে দাঁড়ানো অন্য কাউকে দিয়ে দেওয়ার সিদ্ধান্ত নেন।

নির্দেশনা

বাড়তি কুকিটি কাউকে দিয়ে দেওয়ার সময় আপনি কী বলবেন, তা নির্ধারণ করাই আপনার কাজ।

যদি আপনি ব্যক্তিটির নাম জানেন (যেমন তাঁর নাম যদি Do-yun হয়), তাহলে আপনি বলবেন:

One for Do-yun, one for me.

যদি আপনি ব্যক্তিটির নাম না জানেন, তাহলে তার বদলে you বলবেন।

One for you, one for me.

এখানে কিছু উদাহরণ দেওয়া হলো:

নাম সংলাপ
Alice One for Alice, one for me.
Bohdan One for Bohdan, one for me.
One for you, one for me.
Zaphod One for Zaphod, one for me.

ইমপ্লিমেন্টেশন

শুরু করার আগে নিশ্চিত হয়ে নিন যে টেস্ট কেসগুলো পাস করতে পারে এমন কোড কীভাবে লিখতে হয়, তা আপনি বুঝে গেছেন। আরও প্রসঙ্গ জানতে, এই টিউটোরিয়ালটি দেখে নিন।

বেশিরভাগ Java অনুশীলনীতে একাধিক টেস্ট কেস থাকে। এই কেসগুলো এমনভাবে সাজানো হয়েছে যাতে টেস্ট-ড্রিভেন ডেভেলপমেন্ট (TDD) নামের একটি কাজের প্রক্রিয়াকে সহায়তা করা যায়। TDD-তে একটি সুসংগঠিত চক্র বারবার চালানো হয়, যা প্রোগ্রামারদের জটিল কার্যকারিতা একবারে না বানিয়ে ধাপে ধাপে গড়ে তুলতে সাহায্য করে। সেই চক্রটি এভাবে বর্ণনা করা যায়:

  1. আপনার কোডে এখনও যে কাঙ্ক্ষিত কার্যকারিতার একাংশ নেই, তা বর্ণনা করে একটি টেস্ট যোগ করুন।
  2. টেস্টগুলো রান করে যাচাই করুন যে সদ্য যোগ করা এই টেস্টটি ফেল করে।
  3. আপনার বিদ্যমান কোড আপডেট করুন যতক্ষণ না:
    • আগের সব টেস্ট পাস করতেই থাকে;
    • নতুন টেস্টটিও পাস করে।
  4. আপনার কোড পরিষ্কার করুন, এবং নিশ্চিত করুন যে সব টেস্ট পাস করতেই থাকে। এতে সাধারণত ভ্যারিয়েবলের নাম বদলানো, একই ধরনের কোডের পুনরাবৃত্ত অংশ সরানো, বাদ পড়ে যাওয়া লগিং সরানো ইত্যাদি কাজ থাকে।
  5. সব কাঙ্ক্ষিত কার্যকারিতা গড়ে না ওঠা পর্যন্ত ১ নম্বর ধাপে ফিরে যান!

এই ট্র্যাকের টেস্ট ফাইলগুলোতে আপনার সমাধানকে বৈধ হিসেবে বিবেচিত হতে যে সব টেস্ট পাস করতে হবে, সেগুলোর সবই থাকে। উপরে বর্ণিত চক্রটির সাথে এটি প্রথমেই মানানসই মনে নাও হতে পারে, যেখানে টেস্ট লেখা হয় একটির পর একটি করে। তবে, আমাদের টেস্ট লেখার যে টুলটি ব্যবহার করি, JUnit, সেটি একটি @Disabled অ্যানোটেশন দেয়, যা দিয়ে আগে থেকেই লেখা একটি টেস্ট সাময়িকভাবে বাদ দেওয়া যায়। এই অ্যানোটেশন ব্যবহার করে আমরা নিশ্চিত করি যে আপনার কাছে দেওয়া টেস্ট ফাইলগুলো নিচের নিয়মগুলো মেনে চলে:

  • যেকোনো টেস্ট ফাইলের প্রথম টেস্টটি ডিফল্টভাবে বাদ দেওয়া হয় না।
  • যেকোনো টেস্ট ফাইলের প্রথমটি ছাড়া বাকি সব টেস্ট ডিফল্টভাবে বাদ দেওয়া হয়।

এতে আপনি সামান্য পরিবর্তিত এই ধাপগুলো অনুসরণ করে TDD চক্রটি অনুকরণ করতে পারেন:

  1. টেস্টগুলো রান করে যাচাই করুন যে এখন সর্বাধিক একটি টেস্ট ফেল করে।
  2. যতক্ষণ না বাদ না দেওয়া সব টেস্ট পাস করে, ততক্ষণ আপনার বিদ্যমান কোড আপডেট করুন।
  3. আপনার কোড পরিষ্কার করুন, এবং নিশ্চিত করুন যে বাদ না দেওয়া সব টেস্ট পাস করতেই থাকে।
  4. টেস্ট ফাইলের একেবারে উপরের @Disabled অ্যানোটেশনটি সরিয়ে ফেলুন।
  5. কোনো টেস্ট বাদ না থাকা এবং সব টেস্ট পাস করার আগ পর্যন্ত ১ নম্বর ধাপে ফিরে যান!

সূত্র

এই অনুশীলনীর সূত্র ঘুরে দেখুন।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Java Exercism

Two Fer শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Java ট্র্যাকের 26টি কনসেপ্ট158টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।