Gilded Rose

Gilded Rose

কঠিন

নির্দেশনা

Gilded Rose-এর ইঞ্জিনিয়ারিং টিমে আপনাকে স্বাগতম! আপনি জানেনই, আমরা এমন একটি সরাইখানা, যেখানে কেবল সেরা মানের পণ্য কেনাবেচা হয়। বিক্রয়ের শেষ তারিখ ঘনিয়ে আসার সাথে সাথে আমাদের পণ্যের গুণমান ক্রমাগত কমতে থাকে, তাই এই তথ্যগুলোর হিসাব রাখার জন্য আমাদের একটি ইনভেন্টরি সিস্টেম আছে।

আমাদের সিস্টেমে একটি নতুন ফিচার যোগ করা দরকার, যাতে আমরা নতুন এক ধরনের পণ্য বিক্রি শুরু করতে পারি। তবে কোডটি বেশ এলোমেলো, আর আপনি আগে বিদ্যমান কোড রিফ্যাক্টর না করলে নতুন ফিচার যোগ করা কঠিন হবে।

তাই আপনার কাজ দুটি: ইনভেন্টরি সিস্টেমটি রিফ্যাক্টর করা, তারপর নতুন ফিচারটি যোগ করা।

ইনভেন্টরি সিস্টেমের এক নজরে

আমাদের সিস্টেমের মূল বিষয়গুলো এই রকম:

  • সব পণ্যেরই একটি "sell in" অ্যাট্রিবিউট থাকে, যা বোঝায় পণ্যটি বিক্রি করার জন্য আমাদের কত দিন হাতে আছে।
  • সব পণ্যেরই একটি "quality" অ্যাট্রিবিউট থাকে, যা বোঝায় পণ্যটি কতটা মূল্যবান।
  • প্রতিদিনের শেষে আমাদের সিস্টেম প্রতিটি পণ্যের এই দুটো মানই কমিয়ে দেয়।

বেশ সহজ, তাই না? কিন্তু আসল মজাটা এখান থেকেই শুরু:

  • বিক্রয়ের শেষ তারিখ এসে পড়লে গুণমান দ্বিগুণ দ্রুততায় কমে।
  • কোনো পণ্যের গুণমান কখনো ঋণাত্মক হয় না।
  • Aged Brie যত পুরোনো হয়, তার গুণমান আসলে বাড়তে থাকে।
  • কোনো পণ্যের গুণমান কখনো ৫০-এর বেশি হয় না।
  • Sulfuras একটি কিংবদন্তি পণ্য, তাই এর কোনো বিক্রয়ের শেষ তারিখ নেই, আর এর গুণমান ৮০, যা কখনো কমে না।
  • Backstage passes, Aged Brie-এর মতোই, বিক্রয়ের শেষ তারিখ ঘনিয়ে আসার সাথে সাথে গুণমানে বাড়ে: ১০ দিন বা তার কম বাকি থাকলে গুণমান ২ করে বাড়ে, আর ৫ দিন বা তার কম বাকি থাকলে ৩ করে বাড়ে; তবে কনসার্ট শেষ হওয়ার পর গুণমান ০-এ নেমে আসে।

1. রিফ্যাক্টর

নতুন ফিচারের পথ তৈরি করতে বিদ্যমান কোডটি রিফ্যাক্টর করুন এবং এটিকে পরিবর্তন করা সহজ করে তুলুন।

সবকিছু ঠিকঠাক কাজ করতে থাকলে (অর্থাৎ বিদ্যমান ফিচারগুলোর টেস্ট পাস হতে থাকলে) আপনি নিশ্চিন্তে যেকোনো পরিবর্তন করুন এবং নতুন কোড যোগ করুন।

দ্রষ্টব্য: ধরে নিতে পারেন, পণ্যগুলো সবসময় একটি বৈধ গুণমান নিয়েই শুরু হয়। অন্য কথায়, শুরুতেই কোনো পণ্যের গুণমান সর্বোচ্চ সীমার চেয়ে বেশি হলে, বা Sulfuras-এর শুরুর গুণমান ৮০ ছাড়া অন্য কিছু হলে কী হয়, স্বয়ংক্রিয় টেস্টগুলো তা যাচাই করে না।

2. নতুন ফিচারটি যোগ করুন

আমরা সম্প্রতি Conjured পণ্যের এক সরবরাহকারীর সঙ্গে চুক্তি করেছি। আপনার কাজ হলো আমাদের সিস্টেমে নিচের নিয়মগুলো যোগ করা:

  • Conjured পণ্যের বিক্রয়ের শেষ তারিখ এসে গেলেই তার গুণমান ০-এ নেমে আসে। এছাড়াও:
    • Conjured normal items কনজার্ড নয় এমন সাধারণ পণ্যের তুলনায় দ্বিগুণ দ্রুত গুণমান হারায়।
    • Conjured Sulfuras-এর একটি বিক্রয়ের শেষ তারিখ থাকে, যা কনজার্ড নয় এমন Sulfuras-এর নেই।
    • Conjured backstage passes কনজার্ড না হলে যতটা হারে গুণমান বাড়ত, তার চেয়ে ১ কম হারে বাড়ে।

সূত্র

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

Gilded Rose শুরু করতে প্রস্তুত?

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