আমি null
(উদাহরণস্বরূপ) পরিবর্তে থাকার (আন) সুবিধার্থে পড়ছি Maybe
। এই নিবন্ধটি পড়ার পরে , আমি নিশ্চিত যে এটি ব্যবহার করা আরও ভালMaybe
(বা অনুরূপ কিছু)। যাইহোক, আমি অবাক হয়ে দেখলাম যে সমস্ত "সুপরিচিত" অপরিহার্য বা অবজেক্ট ভিত্তিক প্রোগ্রামিং ভাষা এখনও ব্যবহার করে null
(যা এমন কোনও ধরণের অকার্যকর অ্যাক্সেসের অনুমতি দেয় যা 'কিছুই না' মানকে উপস্থাপন করতে পারে), এবং এটি Maybe
বেশিরভাগ কার্যকরী প্রোগ্রামিং ভাষায় ব্যবহৃত হয়।
উদাহরণ হিসাবে, নিম্নলিখিত সি # কোডটি দেখুন:
void doSomething(string username)
{
// Check that username is not null
// Do something
}
এখানে কিছুটা দুর্গন্ধযুক্ত ... তর্কটি নাল কিনা আমাদের কেন পরীক্ষা করা উচিত? আমাদের কি ধরে নেওয়া উচিত না যে প্রতিটি ভেরিয়েবলের মধ্যে একটি অবজেক্টের রেফারেন্স রয়েছে? আপনি দেখতে পাচ্ছেন, সমস্যাটি হ'ল সংজ্ঞা অনুসারে প্রায় সমস্ত ভেরিয়েবলের নাল রেফারেন্স থাকতে পারে। আমরা যদি সিদ্ধান্ত নিতে পারি যে কোন ভেরিয়েবলগুলি "নাল" এবং কোনটি নয়? এটি ডিবাগ করার সময় এবং "নুলারফেরেন্স এক্সপেশন" সন্ধান করার সময় আমাদের প্রচুর প্রচেষ্টা বাঁচায় would কল্পনা করুন যে, ডিফল্টরূপে, কোনও প্রকারে নাল রেফারেন্স থাকতে পারে না । পরিবর্তে, আপনি স্পষ্টভাবে বলতে হবে যে একটি ভেরিয়েবল একটি নাল রেফারেন্স থাকতে পারে , শুধুমাত্র আপনার যদি সত্যই এটির প্রয়োজন হয়। সম্ভবত এটি পিছনে ধারণা। আপনার যদি এমন কোনও ফাংশন থাকে যা কিছু ক্ষেত্রে ব্যর্থ হয় (উদাহরণস্বরূপ শূন্য দ্বারা বিভাজন), আপনি ফিরে যেতে পারেনMaybe<int>
, স্পষ্ট করে বলছি যে ফলাফলটি কোনও ইনট হতে পারে, তবে কিছুই নয়! এটি নাল পরিবর্তে সম্ভবত পছন্দ করার এক কারণ । আপনি যদি আরও উদাহরণে আগ্রহী হন তবে আমি এই নিবন্ধটি পড়ার পরামর্শ দিচ্ছি ।
ঘটনাগুলি হ'ল, বেশিরভাগ ধরণের ডিফল্টরূপে ডিফল্টরূপে নলাবদ্ধ করার অসুবিধা থাকা সত্ত্বেও বেশিরভাগ ওও প্রোগ্রামিং ভাষা আসলে এটি করে। এজন্য আমি অবাক হয়েছি:
null
আপনার প্রোগ্রামিং ভাষার পরিবর্তে আপনার কী ধরণের যুক্তি প্রয়োগ করতে হবেMaybe
? এর কোন কারণ আছে নাকি এটি কেবল "historicalতিহাসিক লাগেজ"?
দয়া করে নিশ্চিত করুন যে আপনি এই প্রশ্নের উত্তর দেওয়ার আগে নাল এবং সম্ভবত এর মধ্যে পার্থক্যটি বুঝতে পেরেছেন।
null
বা তার ধারণা উপস্থিত না থাকার (IIRC Haskell, এক ধরনের উদাহরণ)।
null
দীর্ঘদিন ধরে তাদের মধ্যে রয়েছে। কেবল এটি ফেলে দেওয়া সহজ নয়।