"নমনীয়" বা ডিটিও হিসাবে অ্যাবস্ট্রাক্ট কোনও কিছুর জন্য সর্বোত্তম অনুশীলন স্থাপন করা শক্ত। মূলত, ডিটিওগুলি কেবল ডেটা স্থানান্তরের জন্য অবজেক্ট তবে গন্তব্য বা স্থানান্তরের কারণের উপর নির্ভর করে আপনি বিভিন্ন "সেরা অভ্যাস" প্রয়োগ করতে চাইতে পারেন।
আমি মার্টিন ফওলারের প্যাটার্নস অফ এন্টারপ্রাইজ অ্যাপ্লিকেশন আর্কিটেকচার পড়ার পরামর্শ দিচ্ছি । নিদর্শনগুলিতে উত্সর্গীকৃত একটি সম্পূর্ণ অধ্যায় রয়েছে, যেখানে ডিটিওরা একটি সত্যই বিশদ বিভাগ পান।
মূলত, তারা ব্যয়বহুল দূরবর্তী কলগুলিতে ব্যবহারের জন্য "নকশা করা" হয়েছিল, যেখানে আপনার যুক্তির বিভিন্ন অংশ থেকে প্রচুর ডেটা প্রয়োজন হতে পারে; ডিটিওরা একক কলে ডেটা স্থানান্তর করতে পারে।
লেখকের মতে, ডিটিওগুলি স্থানীয় পরিবেশে ব্যবহারের উদ্দেশ্যে নয়, তবে কিছু লোক তাদের জন্য একটি ব্যবহার খুঁজে পেয়েছিল। সাধারণত এগুলি জিওআই, এপিআই বা বিভিন্ন স্তরগুলির জন্য ডিফেরেন্ট পোকো থেকে একক সত্তায় তথ্য সংগ্রহ করতে ব্যবহৃত হয়।
এখন, উত্তরাধিকার সহ, কোডের পুনরায় ব্যবহারটি মূল উদ্দেশ্যগুলির চেয়ে উত্তরাধিকারের পার্শ্ব-প্রতিক্রিয়াটির মতো; অন্যদিকে রচনাটি মূল উদ্দেশ্য হিসাবে কোড পুনরায় ব্যবহারের মাধ্যমে প্রয়োগ করা হয়।
কিছু লোক উভয়ের শক্তি ব্যবহার করে এবং তাদের দুর্বলতাগুলি প্রশমিত করার চেষ্টা করে এক সাথে রচনা ও উত্তরাধিকার ব্যবহারের পরামর্শ দেয়। নতুন ডিটিও বা এই বিষয়টির জন্য কোনও নতুন শ্রেণি / বস্তু বাছাই বা তৈরি করার সময় নিম্নলিখিতটি আমার মানসিক প্রক্রিয়ার একটি অংশ:
- আমি একই স্তর বা একই প্রসঙ্গে ডিটিও সহ উত্তরাধিকার ব্যবহার করি। কোনও ডিটিও কোনও পোকো থেকে উত্তরাধিকারী হবে না, কোনও বিএলএল ডিটিও কখনও ডাল ডিটিও ইত্যাদির উত্তরাধিকারী হবে না etc.
- যদি আমি নিজেকে ডিটিও থেকে কোনও ক্ষেত্রটি আড়াল করার চেষ্টা করে দেখতে পাই, তবে আমি পরিবর্তিত করব এবং এর পরিবর্তে সম্ভবত রচনাটি ব্যবহার করব।
- যদি বেস ডিটিওর থেকে খুব কম কয়েকটি ক্ষেত্র আমার প্রয়োজন হয় তবে আমি সেগুলি সর্বজনীন ডিটিওতে রাখব। ইউনিভার্সাল ডিটিও কেবল অভ্যন্তরীণভাবে ব্যবহৃত হয়।
- একটি বেস পোকো / ডিটিও প্রায় কোনও যুক্তির জন্য ব্যবহার করা হবে না, এইভাবে বেসটি তার বাচ্চাদের প্রয়োজনের জবাব দেয়। যদি আমাকে কখনই বেসটি ব্যবহারের প্রয়োজন হয় তবে আমি এমন কোনও নতুন ক্ষেত্র যুক্ত করা এড়াচ্ছি যা এর শিশুরা কখনও ব্যবহার করবে না।
তাদের মধ্যে কিছু সম্ভবত "সেরা" অনুশীলন নয়, তারা যে প্রকল্পগুলিতে আমি কাজ করছি তাদের পক্ষে তারা বেশ ভাল কাজ করে তবে আপনার মনে রাখা দরকার যে কোনও আকারই সবথেকে উপযুক্ত নয়। সর্বজনীন ডিটিওর ক্ষেত্রে আপনার সতর্ক হওয়া উচিত, আমার পদ্ধতিগুলির স্বাক্ষরগুলি দেখতে দেখতে এই রকম:
public void DoSomething(BaseDTO base) {
//Some code
}
যদি কোনও পদ্ধতির কোনও নিজস্ব ডিটিওর প্রয়োজন হয় তবে আমি উত্তরাধিকার করি এবং সাধারণত আমার কেবলমাত্র পরিবর্তনটি করা দরকার তা হ'ল প্যারামিটার, যদিও কখনও কখনও নির্দিষ্ট মামলার জন্য আরও গভীর খনন করতে হয়।
আপনার মন্তব্যগুলি থেকে আমি পেয়েছি যে আপনি নেস্টেড ডিটিও ব্যবহার করছেন। যদি আপনার নেস্টেড ডিটিওগুলিতে কেবলমাত্র অন্য ডিটিওগুলির একটি তালিকা থাকে তবে আমি মনে করি যে সবচেয়ে ভাল কাজ করার জন্য তালিকাটি খালি করা।
আপনাকে যে পরিমাণ ডেটা প্রদর্শন করতে হবে বা তার সাথে কাজ করতে হবে তার উপর নির্ভর করে, নতুন ডিটিও তৈরি করা ভাল ধারণা হতে পারে যা ডেটা সীমাবদ্ধ করে; উদাহরণস্বরূপ, যদি আপনার ইউজারডিটিওর অনেকগুলি ক্ষেত্র থাকে এবং আপনার কেবল 1 বা 2 প্রয়োজন হয় তবে কেবলমাত্র সেই ক্ষেত্রগুলির সাথে একটি ডিটিও করা ভাল। ডিটিওর স্তর, প্রসঙ্গ, ব্যবহার এবং ইউটিলিটিটি সংজ্ঞায়িত করার সময় এটি ডিজাইন করার সময় অনেক সহায়তা করবে।