API ডকুমেন্টেশন বলবে কীভাবে API ব্যবহার করতে হয়। কিন্তু জিনিসপত্র গেলে রংগা, আপনাকে একা ছেড়ে দিতে পারে। এরর মেসেজগুলো প্রায় অসম্পূর্ণ, মিসলিডিং বা অনুপকারী। আর NoMethodError: undefined method '[]' for nil:NilClass দিয়ে আপনি কী করবেন?
API, ফ্রেমওয়ার্ক বা লাইব্রেরি শিখার সময় শুধু সফল কেস শিখলেই চলে না। এরর রিটার্ন করলে কী করবেন সেটাও বুঝতে হয়।
কোড কীভাবে ভাঙবেন?
আপনি যে API ব্যবহার করছেন সেটা ভাঙা শিখার সহজ উপায়: নিজে ভাঙুন!
উদাহরণস্বরূপ, আমি করি:
-
ভুল টাইপের ডেটা পাস করুন। স্ট্রিং-এর জায়গায় সিম্বল, অ্যারে-র জায়গায় স্ট্রিং, অ্যারে-র জায়গায় হ্যাশ - এমনকি।
-
অসম্পূর্ণ ডেটা পাস করুন।
nilপাস করুন, ফিল্ড বাদ দিয়ে হ্যাশ, জাস্ট ইনিশিয়ালাইজড অবজেক্ট। -
API নেটওয়ার্ক এক্সেস চাইলে, ওয়াইফাই ডিসকানেক্ট করুন বা নেটওয়ার্ক কেবল টানুন। শুধু টাইম আউট হবে নাকি কোন সার্ভিসে পৌঁছাতে পারলো না সেটা বলবে?
-
API ব্লক পাস করার অনুমতি দিলে, ব্লকে এক্সেপশন থ্রো করুন বা ভুল টাইপের ডেটা রিটার্ন করুন।
একটা চমৎকার API বলবে আপনি কী ভুল করলেন। এক্সিলেন্ট API বলবে কীভাবে ফিক্স করবেন। কিন্তু অধিকাংশ সময় রুবি NoMethodError, অনিয়ন্ত্রিত nil, অথবা চমৎকার অদ্ভুত রিটার্ন ভ্যালু পাবেন।
কেন কোড ভাঙবেন?
এটা সব খারাপ নয়। ওপেন-সোর্স জেমের সাথে খেললে, আপনি সময় দিয়ে বুঝতে পারেন সে অনিয়ন্ত্রিত বিহেভিয়র কোথায় থেকে এসেছে এবং কেন হয়েছে। ডিবাগ করুন এবং কোড একটু পড়ুন লাইব্রেরি বা API কীভাবে কাজ করে সেটা জানতে।
NoMethodError কোথায় থেকে আসছে সেটা পেলে একধাপ এগিয়ে যান। পরের ব্যক্তি আসলে এই সমস্যায় পড়লে এরর মেসেজ ফিক্স করে দিন! ছোট এরর মেসেজ ফিক্স চমৎকার ওপেন-সোর্স কন্ট্রিবিউশন এবং সহজ পুল রিকোয়েস্ট। এবং এটা সারা রুবি ইকোসিস্টেমকে সবার জন্য একটু উন্নত করে।
ক্লোজড-সোর্স REST API হলেও, এই এক্সারসাইজ থেকে লাভ পাওয়া যাবে। API থেকে কী কী এরর আসতে পারে সেটা দেখলে, রিয়েল টাইমে এরর হলে ফিক্স করা সহজ হয়।
আপনার চারপাশের কোডে এরর দেখতে এবং ফিক্স করতে অভ্যস্ত হলে, ব্রোকেন কোড একটি পাজল লাগবে। এক্সেপশন ও ব্যাকট্রেস স্ক্রিনে দেখলে আপনি আতঙ্কিত হবেন না। বরং সিস্টেম সম্পর্কে আরও জানার সুযোগ হিসেবে দেখবেন।
শেষে, কোড ভাঙলে সেটা আবার জোড়া দিতে পারবেন আপনি এই आत्मবিশ্বাস থাকবে। নতুন লাইব্রেরি ও API ট্রাই করতে সাহস করবেন। আর সেই সাহসিকতা আপনার নতুন জিনিস শিখার রেট বাড়াবে।