আমার প্রোগ্রামের একটি অংশ প্রক্রিয়াকরণের জন্য আমার ডাটাবেসে অনেক টেবিল এবং কলাম থেকে ডেটা আনে। কিছু কলাম হতে পারে null
তবে বর্তমান প্রক্রিয়াকরণ প্রসঙ্গে এটি একটি ত্রুটি।
এটি "তাত্ত্বিকভাবে" হওয়া উচিত নয়, তাই যদি এটি খারাপ ডেটা বা কোডের কোনও বাগের দিকে নির্দেশ করে। কোন ক্ষেত্রটি নির্ভর করে ত্রুটির বিভিন্ন তীব্রতা রয়েছে null
; উদাহরণস্বরূপ কিছু ক্ষেত্রগুলির জন্য প্রক্রিয়াজাতকরণ বন্ধ করা উচিত এবং কাউকে অবহিত করা উচিত, অন্যদের জন্য প্রসেসিং চালিয়ে যাওয়ার অনুমতি দেওয়া উচিত এবং কেবল কাউকে অবহিত করা উচিত।
বিরল তবে সম্ভাব্য null
এন্ট্রিগুলি পরিচালনা করার জন্য কি কোনও ভাল স্থাপত্য বা নকশার নীতি রয়েছে ?
জাভা দিয়ে সমাধানগুলি প্রয়োগ করা সম্ভব হওয়া উচিত তবে আমি ট্যাগটি ব্যবহার করিনি কারণ আমি মনে করি সমস্যাটি কিছুটা ভাষা-অজ্ঞাত is
কিছু চিন্তা যা আমার নিজের মধ্যে ছিল:
নাল ব্যবহার করা হচ্ছে না
ডাটাবেসে একটি নল নীল বাধা ব্যবহার করা সবচেয়ে সহজ হবে।
তবে যদি ডেটাতে মূল সন্নিবেশ করা এই পরবর্তী প্রক্রিয়াধীন পদক্ষেপের চেয়ে বেশি গুরুত্বপূর্ণ হয় তবে কী হবে? সুতরাং সন্নিবেশটি null
টেবিলের মধ্যে একটি রাখবে (বাগের কারণে বা সম্ভবত কিছু কার্যকর কারণ), আমি সন্নিবেশটি ব্যর্থ হওয়া চাই না। ধরা যাক যে প্রোগ্রামের আরও অনেকগুলি অংশ dataোকানো ডেটার উপর নির্ভর করে, তবে এই বিশেষ কলামে নয়। সুতরাং আমি সন্নিবেশ পদক্ষেপের পরিবর্তে বর্তমান প্রক্রিয়াকরণ ধাপে ত্রুটিটিকে ঝুঁকিপূর্ণ করব। এজন্য আমি নট নুল বাধা ব্যবহার করতে চাই না।
নির্লিপ্তভাবে নালপয়েন্টার এক্সসেপশন এর উপর নির্ভর করে
আমি কেবলমাত্র ডেটাটি ব্যবহার করতে পারলাম যেমন আমি এটি সর্বদা উপস্থিত থাকার প্রত্যাশা করি (এবং এটি সত্যই হওয়া উচিত) এবং ফলস্বরূপ এনপিইগুলিকে উপযুক্ত পর্যায়ে ধরতে পারি (উদাহরণস্বরূপ, যাতে বর্তমান প্রবেশের প্রক্রিয়াটি থেমে যায় তবে পুরো প্রক্রিয়াজাতকরণের অগ্রগতি হয় না) )। এটি "ব্যর্থ দ্রুত" নীতি এবং আমি প্রায়শই এটি পছন্দ করি। এটি যদি বাগ হয় তবে কমপক্ষে আমি একটি লগইড এনপিই পাই।
তবে তারপরে আমি বিভিন্ন ধরণের হারানো ডেটার মধ্যে পার্থক্য করার ক্ষমতা হারাতে চাই। যেমন কিছু অনুপস্থিত ডেটার জন্য আমি এটিকে ছেড়ে দিতে পারি, তবে অন্যদের জন্য প্রক্রিয়াজাতকরণ বন্ধ করা উচিত এবং কোনও প্রশাসককে অবহিত করা উচিত।
null
প্রতিটি অ্যাক্সেসের আগে পরীক্ষা করা এবং কাস্টম ব্যতিক্রম ছোঁড়া
কাস্টম ব্যতিক্রমগুলি আমাকে ব্যতিক্রমের উপর ভিত্তি করে সঠিক ক্রিয়াটি সিদ্ধান্ত নিতে দেয়, সুতরাং এটি যাওয়ার পথে মনে হচ্ছে।
তবে আমি যদি কোথাও এটি চেক করতে ভুলে যাই? এছাড়াও আমি তখন আমার কোডটি নাল চেকগুলি দিয়ে বিশৃঙ্খলা করি যা কখনই বা খুব কমই প্রত্যাশিত হয় না (এবং অবশ্যই ব্যবসায়ের লজিক প্রবাহের অংশ নয়)।
যদি আমি এই পথে যেতে পছন্দ করি তবে কোন প্যাটার্নগুলি পদ্ধতির জন্য সবচেয়ে উপযুক্ত?
আমার পদ্ধতির উপর যে কোনও ধারণা এবং মন্তব্য স্বাগত জানানো হয়। যে কোনও প্রকারের আরও ভাল সমাধান (নিদর্শন, নীতিগুলি, আমার কোড বা মডেলগুলির আরও ভাল আর্কিটেকচার ইত্যাদি)।
সম্পাদনা:
আরেকটি প্রতিবন্ধকতা রয়েছে, আমি ডিবি থেকে অধ্যবসায়ের উদ্দেশ্যে ম্যাপিংয়ের জন্য একটি ওআরএম ব্যবহার করছি, সুতরাং সেই স্তরের নাল চেক করা কার্যকর হবে না (নাল কোনও ক্ষতি না করে এমন অংশে একই জিনিস ব্যবহার করা হয়) । আমি এটি যুক্ত করেছি কারণ এতক্ষণ সরবরাহ করা উত্তরগুলি উভয়ই এই বিকল্পটির উল্লেখ করেছে।