এই ডকুমেন্টে ব্যাখ্যা করা হবে কীভাবে একটি নতুন প্র্যাকটিস অনুশীলনী যোগ করতে হয়।
কোন প্র্যাকটিস অনুশীলনীগুলো এখনও ইমপ্লিমেন্ট করা হয়নি তা দেখার সবচেয়ে সহজ উপায় হলো ট্র্যাকের বিল্ড পেজে (যেমন https://exercism.org/tracks/csharp/build) গিয়ে "Practice Exercises" বিভাগটি দেখে নেওয়া।
বিল্ড পেজের ডেটা দিনে একবার আপডেট হয়।
ট্র্যাকের রুট ডিরেক্টরি থেকে bin/add-practice-exercise স্ক্রিপ্ট (সোর্স) রান করে আপনি দ্রুত একটি নতুন প্র্যাকটিস অনুশীলনী স্ক্যাফোল্ড করতে পারেন:
bin/add-practice-exercise <exercise-slug>
চাইলে আপনি অনুশীলনীর ডিফিকাল্টি (-d দিয়ে) এবং/অথবা লেখকের GitHub ইউজারনেম (-a দিয়ে) উল্লেখ করতে পারেন:
bin/add-practice-exercise -d 3 -a foobar <exercise-slug>
আপনি যদি এমন একটি ট্র্যাক রিপোজিটরিতে কাজ করেন যেখানে এই ফাইলটি নেই, তবে উপরের সোর্স লিঙ্কটি ব্যবহার করে সেটি আপনার রিপোজিটরিতে কপি করে নিতে পারেন।
স্ক্যাফোল্ড করা ফাইলগুলো তৈরি হয়ে গেলে আপনাকে এরপর নিচের কাজগুলো করতে হবে:
.meta/config.json ফাইলে:
authors কী (key)-তে অনুশীলনীর লেখকদের GitHub ইউজারনেম যোগ করুনconfig.json ফাইলে:
practices কী (key)-তে কনসেপ্ট যোগ করুন (কেবল যখন ট্র্যাকে কনসেপ্ট অনুশীলনী থাকে তখনই প্রয়োজন)prerequisites কী (key)-তে কনসেপ্ট যোগ করুন (কেবল যখন ট্র্যাকে কনসেপ্ট অনুশীলনী থাকে তখনই প্রয়োজন)অনুশীলনী যোগ করার একটি গুরুত্বপূর্ণ অংশ হলো টেস্ট যোগ করা। মোটামুটি বলতে গেলে, একটি প্র্যাকটিস অনুশীলনীর টেস্ট যোগ করার সময় দুটি বিকল্প থাকে:
canonical-data.json ফাইলের টেস্ট কেস ব্যবহার করে শুরু থেকে টেস্টগুলো ইমপ্লিমেন্ট করুন।https://exercism.org/exercises/<slug>-এ যান)।দ্বিতীয় বিকল্পটি বিশেষভাবে আকর্ষণীয় হতে পারে, কারণ এটি দ্রুত ফলাফল দিতে পারে। তবে মনে রাখবেন, আপনার ট্র্যাকের সাথে সবচেয়ে ভালো মানায় এমনভাবে ইমপ্লিমেন্টেশনটি একটু বদলে নেওয়া উচিত। উদাহরণস্বরূপ, কিছু ট্র্যাক ক্লাস ব্যবহার করে না, শুধু ফাংশন নিয়ে কাজ করে। আবার আপনার ট্র্যাক যদি সাধারণত অবজেক্ট নিয়ে কাজ করে, তাহলে আপনার ট্র্যাকের সাথে সবচেয়ে ভালো মানায় এমনভাবে ইমপ্লিমেন্টেশনটি বদলে নেওয়া উচিত।
কিছু ট্র্যাক একটি টেস্ট জেনারেটর ব্যবহার করে স্বয়ংক্রিয়ভাবে অনুশীলনীর টেস্ট ফাইল (পুনরায়) তৈরি করে। ট্র্যাকে টেস্ট জেনারেটর আছে কি না এবং থাকলে কীভাবে ব্যবহার করতে হয় তা জানতে ট্র্যাকের ডকুমেন্টেশন দেখে নিন।
টেস্ট পাস করে এমন কোড লেখা সম্ভব কি না তা নিশ্চিত করার জন্য একটি উদাহরণ ইমপ্লিমেন্টেশন যোগ করতে হয়।
কোডটি ইডিওম্যাটিক হতে হবে না, শুধু টেস্ট পাস করলেই হবে।
ট্র্যাকের রুট ডিরেক্টরি থেকে bin/verify-exercises স্ক্রিপ্ট (সোর্স) রান করে উদাহরণ ইমপ্লিমেন্টেশনটি সব টেস্ট পাস করে কি না তা যাচাই করতে পারেন:
bin/verify-exercises <exercise-slug>
আউটপুটটি ব্যবহার করে যাচাই করুন যে উদাহরণ ইমপ্লিমেন্টেশনটি সব টেস্ট পাস করছে।
আপনি যদি এমন একটি ট্র্যাক রিপোজিটরিতে কাজ করেন যেখানে এই ফাইলটি নেই, তবে উপরের সোর্স লিঙ্কটি ব্যবহার করে সেটি আপনার রিপোজিটরিতে কপি করে নিতে পারেন।
ভেতরে ভেতরে bin/verify-exercises স্ক্রিপ্টটি কয়েকটি কাজ করে:
স্টাব ইমপ্লিমেন্টেশন ফাইলগুলো শিক্ষার্থীদের জন্য একটি সূচনা বিন্দু তৈরি করে।
আমরা সুপারিশ করি স্টাব ফাইলে ন্যূনতম পরিমাণ কোড থাকুক, যাতে:
বাস্তবে এর অর্থ হলো টেস্ট স্যুটে যে ফাংশন/মেথডগুলো টেস্ট করা হয় সেগুলো নির্ধারণ করা। এই কোড কীভাবে সাজাবে তা নিয়ে ট্র্যাকগুলো স্বাধীন, যতক্ষণ তারা নিশ্চিত করে যে স্টাব কোডটি শুরুতে সব টেস্ট ফেল করে।
Python:
def two_fer(name):
pass
Kotlin:
fun twofer(name: String): String {
TODO("Implement the function to complete the task")
}
শেষ ধাপ হলো ট্র্যাকের (কনফিগারেশন) ফাইলগুলো সঠিকভাবে সাজানো আছে কি না, সিনট্যাক্স ও সিমান্টিক্স দুটো দিক থেকেই, তা যাচাই করতে লিন্টারটি রান করা।
প্রথমে নিচের কমান্ডটি রান করে নিশ্চিত করুন যে আপনার কাছে configlet-এর সর্বশেষ সংস্করণ আছে:
bin/fetch-configlet
এরপর নিচের কমান্ডটি রান করে লিন্টারটি চালান:
bin/configlet lint
আউটপুটটি ব্যবহার করে যাচাই করুন যে সবকিছু ঠিকঠাক আছে।
সবকিছু ঠিকঠাক হয়ে গেলে এরপর আপনি ট্র্যাকের রিপোজিটরিতে একটি পুল রিকোয়েস্ট সাবমিট করতে পারেন।
সাবমিট করার আগে কনট্রিবিউটরদের জন্য পুল রিকোয়েস্ট গাইড এবং পুল রিকোয়েস্ট গাইড পড়ে নিন।
নিশ্চিত করুন যে PR-এর বর্ণনায় যোগ করা অনুশীলনীটির কথা লেখা আছে।