আপনি কিছু কোড পরীক্ষা করতে চান, কিন্তু আপনি আটকে গেছেন। হয়তো আপনি সম্পূর্ণরূপে নিশ্চিত নন যে আপনার অবজেক্টের ইন্টারফেসটি কেমন হওয়া উচিত। হয়তো আপনি অন্য একটি রৌদ্রোজ্জ্বল গ্রীষ্মের দিনে বিভ্রান্ত হয়েছেন। আপনি কি তৈরি করার কথা ভাবছেন তা পরীক্ষা করতে পারেন তা নিশ্চিত নাও হতে পারে। অথবা আপনি বিলম্বিত হতে পারেন, কারণ আপনি এখনই পরীক্ষা লিখতে চান না। আপনি যখন TDD-এর মতো বোধ করেন না তখন আপনি কীভাবে TDD-এর সুবিধা পাবেন?
প্রোটোটাইপ করা, বা ফেলে দেওয়ার জন্য একটি তৈরি করা
"যেখানে একটি নতুন সিস্টেম ধারণা বা নতুন প্রযুক্তি ব্যবহার করা হয়, সেখানে একজনকে ফেলে দেওয়ার জন্য একটি সিস্টেম তৈরি করতে হবে, কারণ এমনকি সর্বোত্তম পরিকল্পনাটি এতটা সর্বজ্ঞ নয় যে এটি প্রথমবার ঠিক করা যায়। অত:পর একটি ফেলে দেওয়ার পরিকল্পনা; যেভাবেই হোক তুমি করবে।" - ফ্রেড ব্রুকস
কখনও কখনও, যখন আমি একটি নতুন বৈশিষ্ট্য শুরু করি, যখন আমি আমার প্রথম পরীক্ষাগুলি লেখার কথা ভাবি তখন আমি পক্ষাঘাতগ্রস্ত বোধ করব। API কেমন হওয়া উচিত, কোন প্যাটার্ন এবং অনুশীলনগুলি সবচেয়ে উপযুক্ত হবে এবং কীভাবে এটি একসাথে ফিট করা উচিত সে সম্পর্কে অনেক সিদ্ধান্ত নেওয়ার দরকার আছে৷
আমি যখন এরকম আটকে থাকি তখন আমি শুরু করার কয়েকটি উপায় আছে। একটি প্রোটোটাইপ তৈরি করা আরেকটি।
আপনি যখন একটি প্রোটোটাইপ লিখবেন, তখন আপনার এটিকে স্কেচের মতো ভাবা উচিত। চিন্তাভাবনা করুন এবং জিনিসগুলি চেষ্টা করুন। এখনও পরীক্ষা বা TDD নিয়ে বিরক্ত করবেন না। পরিবর্তে, কোড সহ যে সিদ্ধান্তগুলি নিতে আপনার কঠিন সময় হচ্ছে তা অন্বেষণ করুন। কয়েকটি নিদর্শন ব্যবহার করে দেখুন, এবং দেখুন আপনি যে বৈশিষ্ট্যটি ডিজাইন করার চেষ্টা করছেন তার মধ্যে কোনটি মানানসই। আপনার অ্যাপের নড়বড়ে অংশগুলি কোথায় রয়েছে, কী আরও চিন্তা করা দরকার এবং কোন কারণ ছাড়াই আপনি উদ্বিগ্ন ছিলেন তা খুঁজে বের করুন৷
তারপর, এটিকে ফেলে দিন এবং পুনর্নির্মাণ করুন৷৷ এইবার, টিডিডি ব্যবহার করে এবং কীভাবে আপনি বৈশিষ্ট্যটি সর্বোত্তমভাবে তৈরি করতে পারেন সে সম্পর্কে আপনার নতুন জ্ঞান।
আপনি জানেন যখন আপনি ভুলবশত git checkout -f
চালান আপনি কিছু লেখার পরে, এবং আপনি পেটে লাথি মারার মতো অনুভূতি পান? কিন্তু তারপরে আপনি বুঝতে পেরেছেন, এটি তৈরি করতে হবে, তাই আমি অনুমান করি যে আমি এটি আবার করব, এবং এটি প্রথমবারের চেয়ে অনেক ভাল দেখায়? এটি প্রোটোটাইপ পুনর্নির্মাণের ক্ষেত্রেও সত্য। বৈশিষ্ট্যটি কীভাবে পারবে সে সম্পর্কে এখন আপনার কাছে কিছু শক্ত ধারণা রয়েছে৷ দেখুন, TDDing সেই বৈশিষ্ট্যটি অনেক সহজে যাবে।
বিপরীত TDD
৷আপনি কি কখনও এমন পরিস্থিতিতে পড়েছেন যেখানে আপনি কীভাবে কিছু তৈরি করতে জানেন, কিন্তু আপনি জানেন না কীভাবে এটির জন্য পরীক্ষা লিখতে হয়? অথবা হতে পারে এটি একটি পদ্ধতিতে এক-লাইন পরিবর্তন, তবে এটিতে কিছু টুইকিংয়ের প্রয়োজন হতে পারে, তাই পরিবর্তনটি আসলে কেমন হবে তা জানার আগে আপনি এটিকে পরীক্ষা করে লক করতে চান না?
একটি সহজ প্রক্রিয়া আছে যা এই পরিস্থিতিতে অনেক সাহায্য করে:
- কোড লিখুন, পরীক্ষা ছাড়াই।
- কোডের জন্য একটি পরীক্ষা লিখুন। এটি পাস হয়েছে তা নিশ্চিত করুন৷৷
- মন্তব্য প্রকাশ করুন আপনি যে কোডটি লিখেছেন, অথবা যে ফাইলটিতে আপনি কোড পরিবর্তন করেছেন সেটি প্রত্যাবর্তন করুন।
- আবার পরীক্ষা চালান। নিশ্চিত করুন এটি ব্যর্থ হয়েছে৷৷
- কোডটি আবার লিখুন। আপনার পরীক্ষা চালান. তারা পাস করেছে তা নিশ্চিত করুন।
- কোড রিফ্যাক্টর করুন , আপনার নতুন পরীক্ষার সুবিধা নিয়ে।
আমি এটিকে বিপরীত TDD হিসেবে মনে করি অথবা সবুজ-লাল-সবুজ-রিফ্যাক্টর। আপনি TDD-এর "পরীক্ষা-চালিত নকশা" অংশটি পাবেন না, তবে আপনার কোডটি ভেঙে গেলে আপনি আপনার পরীক্ষাগুলি ব্যর্থ হয়েছে তা দেখতে পাবেন। এটি গুরুত্বপূর্ণ, কারণ আপনি এমন পরীক্ষাগুলিতে বিশ্বাস করতে পারবেন না যা অন্তত একবার ব্যর্থ হয় না।
বিপরীত TDD সাধারণত ছোট পরিবর্তনের সাথে সবচেয়ে ভাল কাজ করে যার জন্য খুব বেশি ডিজাইনের প্রয়োজন হয় না। বাগ ফিক্স বা পরিবর্তনগুলিকে ভাবুন যা একটি একক লাইন, পদ্ধতি বা শ্রেণিতে স্থানীয়করণ করা হয়। কিন্তু আমি এই কৌশলটি অনেক ব্যবহার করি, বিশেষ করে ছোট পরিবর্তনের জন্য যা আমি এখনও খেলছি।
দ্য পেয়ারিং গেম
পেয়ারিং গেম হল আপনার লাল-সবুজ-রিফ্যাক্টর রুটিন থেকে বেরিয়ে আসার একটি দুর্দান্ত উপায় যখন আপনার আশেপাশে অন্য বিকাশকারী থাকে। এটা এই মত কাজ করে:
- একজন অংশীদার খুঁজুন।
- আপনি একটি পরীক্ষা লিখুন যা ভেঙে যাবে।
- আপনার সঙ্গী সম্ভাব্য সবচেয়ে সহজ কোড দিয়ে সেই পরীক্ষাটি ঠিক করার চেষ্টা করে।
- আপনি আরেকটি পরীক্ষা লিখুন যা সেই কোডে ব্যর্থ হবে।
- আপনার সঙ্গী কোড লেখেন যা সেই পরীক্ষায় উত্তীর্ণ হবে।
- পুনরাবৃত্তি…
- কোন সময়ে যখন পরীক্ষাগুলি সবুজ হয়, আপনি পরীক্ষা লেখার পরিবর্তে কিছু কোড রিফ্যাক্টর বেছে নিতে পারেন।
- রিফ্যাক্টর করার পরে, পরীক্ষক এবং কোডার পজিশন অদলবদল করুন।
আমি আপনাকে একটি গোপন কথা জানাতে দেব:বোলিং স্কোর ক্যালকুলেটরে পেয়ারিং গেম খেলতে গিয়ে আমি মূলত TDD শিখেছি। এটি আপনাকে ব্যর্থ পরীক্ষাগুলির উপর ভিত্তি করে সাধারণ কোড লেখার অনুশীলন করতে এবং সেই পরীক্ষাগুলি শুরু করতে সাহায্য করবে। উভয় বিকাশকারী একে অপরের কোডিং শৈলী এবং প্রিয় কৌশল সম্পর্কে অনেক কিছু শিখবে। এবং আপনি প্রায় অবিলম্বে প্রবাহে আঘাত করবেন, যার মানে আপনি যখন শেষ করবেন তখন আপনি দুর্দান্ত অনুভব করবেন।
আপনি হয়ত দ্রুত কোড তৈরি করতে পারবেন না, কিন্তু এটি অনেক মজার, এবং একটি দুর্দান্ত শেখার অভিজ্ঞতা।
কৌতুকপূর্ণ থাকুন এবং পরীক্ষা করুন
টিডিডি গোঁড়ামি হওয়া উচিত নয়। মূল টিডিডি ধারণাগুলির সাথে আপনি খেলতে পারেন এমন উপায় রয়েছে যা আপনাকে কিছু সত্যিই আকর্ষণীয় জায়গায় নিয়ে যেতে পারে। এবং আপনি আরও ভাল কোড দিয়ে শেষ করতে পারেন৷
৷তাই পরীক্ষা। কোড এবং TDD লেখার জন্য নতুন পদ্ধতির চেষ্টা করুন। তারা আপনাকে কেমন অনুভব করে এবং আপনি কী ধরনের কোড দিয়ে শেষ করেন তা দেখুন। এবং আপনি প্রতিদিন যে কাজটি করেন তার মজা এবং প্রবাহ পুনরায় আবিষ্কার করতে থাকুন।