বৈধতা যত তাড়াতাড়ি সম্ভব সঞ্চালন করা উচিত।
যে কোনও প্রসঙ্গে বৈধতা, আমরা ডোমেন মডেল বা লেখার সফটওয়্যারের অন্য কোনও উপায়ে যা যাচাই করতে চাই এবং যে মুহূর্তে আপনি কোন স্তরে রয়েছেন তার উদ্দেশ্যটি কার্যকর করা উচিত।
আপনার প্রশ্নের ভিত্তিতে, আমি অনুমান করি উত্তরটি বৈধতা বিভক্ত করা হবে।
সম্পত্তির বৈধতা যাচাই করে that সম্পত্তিটির মান সঠিক কিনা উদাহরণস্বরূপ যখন 1-10 এর মধ্যে ব্যাপ্তি শেষ হয়।
অবজেক্টের বৈধতা গ্যারান্টি দেয় যে বস্তুর সমস্ত বৈশিষ্ট্য একে অপরের সাথে একযোগে বৈধ। যেমন বিগিনিডেট শেষ তারিখের আগে। মনে করুন আপনি ডেটা স্টোর থেকে কোনও মান পড়েছেন এবং বিগিনেট এবং শেষ তারিখ উভয়ই ডিফল্টরূপে ডেটটাইম-মিনে আরম্ভ করা হয়েছে। বিগনিডেট সেট করার সময়, "এন্ডেটেটের আগে হওয়া উচিত" বিধি প্রয়োগ করার কোনও কারণ নেই, কারণ এটি ওয়াইইটি প্রয়োগ করে না। সমস্ত সম্পত্তি সেট করার পরে এই নিয়মটি পরীক্ষা করা উচিত। এটি সামগ্রিক মূল স্তরে বলা যেতে পারে
সমষ্টি (বা সমষ্টিগত মূল) সত্তায়ও বৈধকরণের প্রবর্তন করা উচিত। একটি অর্ডার অবজেক্টে বৈধ ডেটা থাকতে পারে এবং তাই এটি অর্ডারলাইনসও করে। তবে তারপরে একটি ব্যবসায়িক বিধি জানিয়েছে যে কোনও অর্ডার $ 1000 ডলারের বেশি হতে পারে না। আপনি কিছু ক্ষেত্রে এই আইএসকে মঞ্জুরি দিয়ে এই আইনটি কীভাবে প্রয়োগ করবেন। আপনি কেবল "পরিমাণের বৈধতা দেবেন না" সম্পত্তি যুক্ত করতে পারবেন না কারণ এটি অপব্যবহারের কারণ হতে পারে (যত তাড়াতাড়ি বা পরে, এমনকি আপনি এমনকি কেবল এই "বাজে অনুরোধ "টিকে সরিয়ে দিতে)।
এরপরে উপস্থাপনা স্তরে বৈধতা রয়েছে। আপনি কি সত্যই নেটওয়ার্কটির মাধ্যমে অবজেক্টটি প্রেরণ করতে যাচ্ছেন, এটি ব্যর্থ হবে তা জেনে? অথবা আপনি ব্যবহারকারীকে এই বোঝাটি ছাড়িয়ে দেবেন এবং কোনও অবৈধ মান প্রবেশের সাথে সাথেই তাকে অবহিত করবেন। যেমন বেশিরভাগ সময় আপনার ডিইভি পরিবেশ উত্পাদনের তুলনায় ধীর হয়। আপনি "আপনারা এই ক্ষেত্রটি অন্য কোনও পরীক্ষা চলাকালীন আবার ভুলে গেছেন" বলে জানানোর আগে আপনি 30 সেকেন্ড অপেক্ষা করতে চান, বিশেষত যখন আপনার বসকে ঘাড়ে নিঃশ্বাস নেওয়ার সাথে সাথে কোনও প্রোডাকশন বাগ সংশোধন করতে হবে?
অধ্যবসায় স্তরে বৈধতা যতটা সম্ভব সম্পত্তি মূল্য বৈধতার কাছাকাছি থাকার কথা to এটি কোনও ধরণের বা সরল পুরাতন ডেটা পাঠকদের ম্যাপার ব্যবহার করার সময় "নাল" বা "অবৈধ মান" ত্রুটিগুলি পড়ার ব্যতিক্রমগুলি প্রতিরোধ করতে সহায়তা করবে। সঞ্চিত প্রক্রিয়াগুলি ব্যবহার করা এই সমস্যার সমাধান করে, তবে একই বৈকল্পিক যুক্তিটি আবার লিখতে হবে এবং এটি আবার কার্যকর করতে হবে। এবং সঞ্চিত পদ্ধতি হ'ল ডিবি অ্যাডমিন ডোমেন, সুতরাং তাঁর কাজটিও করার চেষ্টা করবেন না (বা আরও খারাপ তাকে "এই" বাছাইয়ের জন্য তার বেতন দেওয়া হচ্ছে না "তাকে বিরক্ত করবেন না)।
তাই এটি কয়েকটি বিখ্যাত শব্দ "এটি নির্ভর করে" দিয়ে বলতে, তবে কমপক্ষে আপনি এখনই জানেন যে এটি নির্ভর করে।
আমি আশা করি আমি এই সবগুলি এক জায়গায় রেখে দিতে পারি, তবে দুর্ভাগ্যক্রমে, এটি করা যায় না। এটি করার ফলে সমস্ত স্তরগুলির জন্য সমস্ত বৈধতা থাকা "গড অবজেক্ট" এর উপর নির্ভরতা থাকবে। আপনি সেই অন্ধকার পথে নামতে চান না।
এই কারণে আমি বৈধতা ব্যতীত কেবলমাত্র একটি সম্পত্তি স্তর নিক্ষেপ করি। সমস্ত "ভাঙ্গা বিধি" সংগ্রহ করতে এবং একক সমষ্টিগত এক্সসেপশনে তাদের ব্যবহারকারীর কাছে প্রেরণ করার জন্য আমি ইস্ভালিড পদ্ধতিতে যাচাইকরণ ফলাফল ব্যবহার করি All
কল স্ট্যাক প্রচার করার সময়, আমি উপস্থাপনা স্তরে পৌঁছা পর্যন্ত আমি এগুলি আবার একত্রিত এক্সেক্সসেপসে সংগ্রহ করি। পরিষেবা স্তরটি এই ব্যতিক্রমটি সরাসরি ক্লায়েন্টের কাছে একটি ফল্ট এক্সসেপশন হিসাবে ডাব্লুসিএফের ক্ষেত্রে ফেলে দিতে পারে।
এটি আমাকে ব্যতিক্রম নিতে দেয় এবং প্রতিটি ইনপুট নিয়ন্ত্রণে স্বতন্ত্র ত্রুটিগুলি দেখানোর জন্য বা এটি চ্যাপ্ট করে একক তালিকায় দেখানোর জন্য এটি আলাদা করে দেয়। সিদ্ধান্ত আপনার.
এ কারণেই আমি এটিকে যথাসম্ভব শর্ট সার্কিটের জন্য উপস্থাপনা বৈধতার কথাও উল্লেখ করেছি।
আপনি যদি ভাবছেন যে কেন আমারও সমষ্টি স্তরে বৈধতা আছে (বা আপনি যদি পছন্দ করেন তবে পরিষেবা স্তর), কারণ আমার কাছে ক্রিস্টাল বল নেই যে ভবিষ্যতে আমার পরিষেবাগুলি কে ব্যবহার করবে। অন্যকে নিজের ভুল থেকে বিরত রাখতে আপনার নিজের ভুলগুলি খুঁজে পেতে আপনার যথেষ্ট সমস্যা হবে :) অবৈধ ডেটা ইনপুট করে.আপনি অ্যাপ্লিকেশন এ পরিচালনা করেন তবে অ্যাপ্লিকেশন বি আপনার পরিষেবা ব্যবহার করে কিছু ডেটা ফিড করে। অনুমান করুন যে কোনও বাগ থাকলে তারা প্রথমে কে জিজ্ঞাসা করে? অ্যাপ্লিকেশন বি এর প্রশাসক খুশি হয়ে ব্যবহারকারীকে জানিয়ে দেবে "আমার শেষে কোনও ত্রুটি নেই, আমি কেবল ডেটা ফিড করি"।