আমি এটি দিয়ে শুরু করব: ধারাবাহিকতা রাজা, আপনার কোড বেসের ধারাবাহিকতার চেয়ে সিদ্ধান্ত কম গুরুত্বপূর্ণ।
সি ++ এ
সিএল ++ এ NULL 0 বা 0L হিসাবে সংজ্ঞায়িত করা হয়েছে।
আপনি যদি সি ++ প্রোগ্রামিং ল্যাঙ্গুয়েজটি পড়ে থাকেন বাজরেন স্ট্রাস্ট্রপ অ্যাসাইনমেন্ট করার সময় ম্যাক্রো 0এড়ানোর জন্য স্পষ্টভাবে ব্যবহার করার পরামর্শ দেয় তবেNULL আমি নিশ্চিত নই যে তিনি তুলনা করে একই করেছেন কিনা, আমি বইটি পড়ে কিছুক্ষণ হয়ে গেলাম, আমার মনে হয় তিনি কেবল করেছেনif(some_ptr) সুস্পষ্ট তুলনা ছাড়াই তবে আমি তাতে অস্পষ্ট।
এর কারণ হ'ল NULLম্যাক্রো বিভ্রান্তিমূলক (প্রায় সব ম্যাক্রো হ'ল) এটি আসলে 0আক্ষরিক, নাম অনুসারে এটি কোনও অনন্য প্রকার নয় sugges সি ++ এর অন্যতম সাধারণ নির্দেশিকা ম্যাক্রোগগুলি এড়ানো। অন্য দিকে,0 দেখতে পূর্ণসংখ্যার মতো লাগে এবং এটি যখন পয়েন্টারগুলির সাথে তুলনা করা বা নির্ধারিত হয় তা হয় না। ব্যক্তিগতভাবে আমি যে কোনও উপায়ে যেতে পারতাম, তবে সাধারণত আমি স্পষ্ট তুলনা এড়িয়ে যাই (যদিও কিছু লোক এটি পছন্দ করে না কারণ সম্ভবত আপনার কোনও সহযোগী যেভাবেই কোনও পরিবর্তনের পরামর্শ দেয়)।
ব্যক্তিগত অনুভূতি নির্বিশেষে এটি একটি সঠিক পদ্ধতি না হওয়ায় এটি মূলত সর্বনিম্ন দুষ্টের পছন্দ।
এটি পরিষ্কার এবং একটি সাধারণ প্রতিমা এবং আমি এটি পছন্দ করি, তুলনার সময় দুর্ঘটনাক্রমে কোনও মূল্য নির্ধারণের কোনও সম্ভাবনা নেই এবং এটি স্পষ্টভাবে পড়ে:
if(some_ptr){;}
এটি যদি আপনি জানেন যে some_ptrএটি একটি পয়েন্টার ধরণের, তবে এটি একটি পূর্ণসংখ্যার তুলনার মতো দেখতেও স্পষ্ট :
if(some_ptr != 0){;}
এটি স্পষ্ট-ইশ, সাধারণ ক্ষেত্রে এটি বোধগম্য হয় ... তবে এটি একটি ফাঁসযুক্ত বিমূর্ততা, NULLআসলে 0আক্ষরিক এবং সহজেই অপব্যবহারের অবসান হতে পারে:
if(some_ptr != NULL){;}
সি ++ 0 এক্স এর নলপ্টর রয়েছে যা স্পষ্ট এবং নির্ভুল হওয়ায় এখন পছন্দসই পদ্ধতি, দুর্ঘটনাজনিত কার্যভার সম্পর্কে সতর্ক থাকুন:
if(some_ptr != nullptr){;}
যতক্ষণ না আপনি সি ++ 0 এক্সে স্থানান্তরিত করতে সক্ষম হবেন ততক্ষণ পর্যন্ত আমি যুক্তি দিয়ে বলব যে এই পদ্ধতিগুলির মধ্যে আপনি কী ব্যবহার করবেন তা নিয়ে চিন্তা করা সময় নষ্ট করে না দেওয়া, এগুলি সবই অপর্যাপ্ত কারণ নালপ্টারের উদ্ভাবন করা হয়েছিল (জেনেরিক প্রোগ্রামিং ইস্যুগুলির সাথে যা নিখুঁত ফরোয়ার্ডিংয়ের সাথে সামনে আসে ।) সর্বাধিক গুরুত্বপূর্ণ বিষয় হল ধারাবাহিকতা বজায় রাখা।
সি তে
সি একটি আলাদা জন্তু।
সি NULL তে 0 বা ((অকার্যকর *) 0) হিসাবে সংজ্ঞায়িত করা যেতে পারে, C99 নির্ধারিত নাল পয়েন্টার ধ্রুবক বাস্তবায়নের অনুমতি দেয়। সুতরাং এটি বাস্তবায়নের NUL বাস্তবায়নের সংজ্ঞায় নেমে আসে এবং আপনাকে এটি আপনার স্ট্যান্ডার্ড লাইব্রেরিতে পরিদর্শন করতে হবে।
ম্যাক্রোগুলি খুব সাধারণ এবং সাধারণভাবে তারা ভাষা এবং অন্যান্য বিষয়গুলিতে জেনেরিক প্রোগ্রামিং সমর্থনগুলিতে ঘাটতি পূরণ করতে প্রচুর ব্যবহৃত হয়। ভাষাটি অনেক সাধারণ এবং প্রাক-প্রসেসরের উপর বেশি নির্ভরতা সাধারণ iance
এই দৃষ্টিকোণ থেকে আমি সম্ভবত NULLসি তে ম্যাক্রো সংজ্ঞা ব্যবহার করার পরামর্শ দেব