গত সপ্তাহে, আমাদের অ্যাপ্লিকেশনটির পরিষেবার স্তরে নালগুলি পরিচালনা করার বিষয়ে আমাদের মধ্যে উত্তপ্ত তর্ক হয়েছিল। প্রশ্নটি। নেট প্রসঙ্গে রয়েছে, তবে এটি জাভা এবং অন্যান্য অনেক প্রযুক্তিতে একই হবে।
প্রশ্নটি ছিল: আপনি কি সর্বদা নালাগুলি পরীক্ষা করে দেখুন এবং আপনার কোডকে কোনও কাজই করা উচিত না, বা অপ্রত্যাশিতভাবে কোনও শূন্যতা পাওয়া গেলে কোনও ব্যতিক্রম বুবলী আপ করা উচিত?
একদিকে, নালটি পরীক্ষা করা যেখানে আপনি এটির প্রত্যাশা করছেন না (যেমন এটি পরিচালনা করার জন্য কোনও ইউজার ইন্টারফেস নেই), আমার মতে, খালি ধরা দিয়ে ট্রাই ব্লক লেখার সমান। আপনি কেবল একটি ত্রুটি গোপন করছেন। ত্রুটিটি হতে পারে যে কোডটিতে কিছু পরিবর্তন হয়েছে এবং নাল এখন একটি প্রত্যাশিত মান, বা অন্য কোনও ত্রুটি রয়েছে এবং ভুল আইডি পদ্ধতিতে পাস করা হয়েছে।
অন্যদিকে, নালগুলির জন্য পরীক্ষা করা সাধারণভাবে একটি ভাল অভ্যাস হতে পারে। তদতিরিক্ত, যদি কোনও চেক থাকে তবে অ্যাপ্লিকেশনটি কাজ করতে পারে, কার্যকারিতার সামান্য অংশের কোনও প্রভাব নেই। তারপরে গ্রাহক একটি ছোট বাগের মতো "মন্তব্য মুছতে পারবেন না" যেমন "মারাত্মক বাগ এক্সটি খুলতে পারে না" এর মতো আরও মারাত্মক বাগের পরিবর্তে রিপোর্ট করতে পারে।
আপনি কোন অনুশীলনটি অনুসরণ করেন এবং উভয় পদ্ধতির পক্ষে বা বিপক্ষে আপনার যুক্তিগুলি কী?
হালনাগাদ:
আমি আমাদের বিশেষ কেস সম্পর্কে কিছু বিশদ যুক্ত করতে চাই। আমরা ডাটাবেস থেকে কিছু বস্তু পুনরুদ্ধার করছিলাম এবং সেগুলিতে কিছু প্রক্রিয়াজাত করেছি (আসুন বলি, একটি সংগ্রহ তৈরি করুন)। কোডটি লিখেছেন এমন বিকাশকারী ধারণা করতে পারেননি যে বস্তুটি শূন্য হতে পারে তাই তিনি কোনও চেক অন্তর্ভুক্ত করেননি এবং পৃষ্ঠাটি লোড করার সময় একটি ত্রুটি হয়েছিল এবং পুরো পৃষ্ঠাটি লোড হয়নি।
অবশ্যই, এই ক্ষেত্রে একটি চেক করা উচিত ছিল। তারপরে আমরা প্রক্রিয়াজাত প্রতিটি বস্তুটি অনুপস্থিত না হওয়া সত্ত্বেও, চূড়ান্তভাবে প্রক্রিয়াজাতকরণ বাতিল করে দেওয়া উচিত কিনা তা পরীক্ষা করা উচিত কিনা তা নিয়ে আমরা একটি তর্কবিতর্ক হয়ে গেলাম।
অনুমানমূলক সুবিধাটি হ'ল পৃষ্ঠাটি কাজ চালিয়ে যাবে। স্ট্যাক এক্সচেঞ্জের বিভিন্ন গ্রুপে (ব্যবহারকারী, মন্তব্য, প্রশ্ন) অনুসন্ধানের ফলাফলগুলি নিয়ে ভাবেন। পদ্ধতিটি নাল যাচাই করতে পারে এবং ব্যবহারকারীদের প্রক্রিয়াজাতকরণ বাতিল করতে পারে (যা বাগের কারণে বাতিল হয়) তবে "মন্তব্যগুলি" এবং "প্রশ্নগুলি" বিভাগগুলি ফেরত দেয়। "ব্যবহারকারী" বিভাগটি অনুপস্থিত (যা একটি বাগ) এটি বাদ দিয়ে পৃষ্ঠাটি কাজ চালিয়ে যেতে থাকবে। আমরা কি তাড়াতাড়ি ব্যর্থ হয়ে পুরো পৃষ্ঠাটি ভেঙে বা কাজ চালিয়ে যেতে হবে এবং "ব্যবহারকারী" বিভাগটি অনুপস্থিত রয়েছে এমন কেউ লক্ষ করার জন্য অপেক্ষা করা উচিত?
assert(foo != null, "foo is web control within the repeater, there's no reason to expect it to be null, etc, etc...");