স্পেসিফিকেশন
আমি জানি আপনি ইতিমধ্যে একটি উত্তর গ্রহণ করেছেন, কিন্তু, আপনি ডিডিডি সম্পর্কে জিজ্ঞাসা করেছিলেন, এবং এর সঠিক মিলটি এভান্সকে একটি 'স্পেসিফিকেশন' বলে ডাকে:
সরাসরি গুগল বইগুলির লিঙ্কটি
যদি এই ফলাফলটিতে এই লিঙ্কটি বইটির জন্য অনুসন্ধান না করে তবে
আপনার যদি বইটি থাকে তবে এটি 226 পৃষ্ঠা।
227 পৃষ্ঠায় স্পেসিফিকেশনগুলির জন্য 3 টি ব্যবহার রয়েছে: বৈধকরণ, স্লেশন, একটি নতুন বিশেষ অবজেক্ট তৈরি করা। আপনার 'নির্বাচন' - ইস্পর্সিত।
'স্পেসিফিক্যানন' ধারণা সম্পর্কে আরেকটি বিষয় হ'ল এটি স্বীকার করে যে - দক্ষতার জন্য - মেমরির অন্তর্নিহিত অবজেক্টগুলিতে পরিচালনা করার জন্য আপনার কোডের একটি সংস্করণ এবং প্রথমে না পেয়েই দক্ষতার সাথে সংগ্রহশালাটি অনুসন্ধান করতে কোডের অন্য একটি সংস্করণের প্রয়োজন হতে পারে - সমস্ত বস্তু মেমরি মধ্যে।
একটি সাধারণ বিশ্বে এটির অর্থ হ'ল আপনার ভান্ডারগুলিতে একটি এসকিউএল সংস্করণ এবং আপনার মডেলটিতে কোনও অবজেক্ট সংস্করণ রাখা উচিত, এতে অবশ্যই অসুবিধা রয়েছে। যুক্তিটি 2 টি স্থানে রয়েছে (খারাপ, কেউ কেউ সেই জায়গাগুলির আপডেট করতে ভুলে যেতে পারে) এবং আপনার সংগ্রহশালায় ডোমেন লজিক রয়েছে।
সুতরাং উত্তরটি হ'ল লজিকের দুটি সেটকে একটি নির্দিষ্টকরণে রাখুন। ইন-মেমরি সংস্করণ, স্পষ্টতই, তবে একটি সংগ্রহস্থল সংস্করণও। যদি আপনি উদাহরণস্বরূপ এন-হাইবারনেট ব্যবহার করেন তবে আপনি এর বিল্ট-ইন ক্যোয়ারী ভাষাটি সংগ্রহস্থল সংস্করণের জন্য ব্যবহার করতে পারেন।
অন্যথায় আপনাকে এই স্পেসিফিকেশনটির জন্য একটি বিশেষ সংগ্রহস্থল তৈরি করতে হবে যা স্পেসিফিকেশন অবজেক্ট থেকে ব্যবহৃত হয়। স্পেসিফিকেশনের সাথে মিলে যাওয়া সামগ্রীর সংগ্রহের কলগুলি স্পেসিফিকেশনের মাধ্যমে চলে, সংগ্রহস্থল নয়। এবং কমপক্ষে কোডটি চিৎকার করে বলে আমি 2 জায়গায় আছি, এটি ভুলে যাবেন না ভবিষ্যতের রক্ষণাবেক্ষণকারীদের কাছে। 231-232 পৃষ্ঠাতে খুব অনুরূপ সমস্যার সমাধানের জন্য একটি দুর্দান্ত উদাহরণ রয়েছে।
স্পেসিফিকেশন হ'ল ডিডিডি'র বিশুদ্ধতার 'অনুমোদিত' ফুটো / পিচ্ছিল। এটি এখনও বিভিন্ন প্রয়োজনে আপনার প্রয়োজনগুলি পরিবেশন করতে পারে না। উদাহরণস্বরূপ, ORM খারাপ এসকিউএল উত্পন্ন করতে পারে; খুব বেশি অতিরিক্ত কোডিং থাকতে পারে। সুতরাং আপনাকে সংগ্রহস্থলগুলি এমন কল করতে হতে পারে যে এটি প্রায় স্পেসিফিকেশনে এসকিউএল স্থাপনের মতো। অবশ্যই একটি খারাপ জিনিস। তবে ভুলে যাবেন না, আপনার প্রোগ্রামটি কার্যকর করতে হবে - একটি যুক্তিসঙ্গত গতিতে। এটির জন্য কোনও ডিডিডি বিশুদ্ধতা পুরস্কার জিততে হবে না। সুতরাং ডেটাস্টোরগুলিতে স্যুইচিংয়ের বাস্তবতাটির অর্থ প্রোগ্রামটি চলাকালীন পুরানো ফ্যাশনযুক্ত সার্গ্রি হতে পারে। একটি খারাপ জিনিস। তবে একটি ধীর (ওরফে এসকিং) প্রোগ্রামের মতো খারাপ নয়। যদি বিভিন্ন ডিবিতে বাক্সটি না ছড়িয়ে দেওয়া একটি বাস্তবতা হয় তবে স্পষ্টতই, আপনি প্রতিটি স্পেসিফিকেশনের জন্য প্রতিটি ডাটাস্টোরের ব্যবসায়ের নিয়মগুলি নকল করবেন। কমপক্ষে আপনার বিষয়ে আপনার আঙ্গুলটি রয়েছে এবং আপনি সংগ্রহস্থলগুলি অদলবদল করার সময় কৌশল কৌশলটি ব্যবহার করতে পারেন। তবে আপনি যদি কোনও নির্দিষ্ট ডিবি ব্যবহার করে থাকেন তবে ইতিমধ্যে মনে রাখবেনYAGNI।
সিকিউআরএস সম্পর্কিত: উপরের পিডিআর দ্বারা ফওলারের উক্তিটি এখানে এখনও সত্য: "কমান্ড এবং প্রশ্নের জন্য একই ধারণাগত মডেল থাকা একটি আরও জটিল মডেলের দিকে নিয়ে যায় যা ভাল করে না" ... এবং আপনাকে সিকিউআরএস বা অনুরূপ ব্যবহারের প্রয়োজন হতে পারে। তবে এটি উন্নয়ন এবং রক্ষণাবেক্ষণের দিক থেকে অনেক বেশি ব্যয়বহুল। আপনি যদি অন্যদের সাথে প্রতিযোগিতায় প্যাকেজ বিক্রেতা হন তবে এটি প্রদান করতে পারে। আপনি যদি কোনও গ্রাহকের জন্য একটি কাস্টম এলওবি অ্যাপ্লিকেশন লিখছেন তবে পরিপূর্ণতার জন্য শুটিং করা খুব কম পছন্দ। আপনার সিদ্ধান্ত নিতে হবে একটি সম্পূর্ণ বা বেশিরভাগ ডাবল মডেল থাকার মান অতিরিক্ত পরিশ্রমের জন্য মূল্যবান কিনা। সবিস্তার বিবরণীএকটি ভাল আপোস কারণ এটি আপনাকে একটি মডেলের (বিকাশ) গতি এবং সরলতার সাথে প্রোগ্রামের প্রয়োজন মাত্র একটি ছোট্ট অংশে এই বিচ্ছেদ তৈরি করতে দেয়। শুভকামনা!