দুজনের মধ্যে আমার পছন্দটি প্রথম পদ্ধতি:
function insertIntoDatabase(Account account, Otherthing thing) {
database.insertMethod(account.getId(), thing.getId(), thing.getSomeValue());
}
কারণগুলি হ'ল যে কোনও কারণে রাস্তায় অবরুদ্ধ হয়ে যাওয়া পরিবর্তনগুলি যতক্ষণ না সেই পরিবর্তনকারীদের সংরক্ষণ করে তাই পরিবর্তনটি বস্তুর বাইরে স্বচ্ছ হয়, তারপরে আপনার পরিবর্তনের জন্য কোড কম এবং পরীক্ষার কম সুযোগ থাকে এবং অ্যাপটি বিঘ্নিত হওয়ার সম্ভাবনা কম থাকে।
এটি কেবলমাত্র আমার চিন্তার প্রক্রিয়া, মূলত আমি কীভাবে এই প্রকৃতির জিনিসগুলিকে কাজ করতে এবং কাঠামো তৈরি করতে পছন্দ করি এবং যা দীর্ঘমেয়াদে বেশ পরিচালনাযোগ্য এবং রক্ষণাবেক্ষণযোগ্য হিসাবে প্রমাণিত হয় তার উপর ভিত্তি করে।
আমি নামকরণের সম্মেলনে নামতে যাচ্ছি না তবে এটি উল্লেখ করব যে যদিও এই পদ্ধতিতে "ডাটাবেস" শব্দটি রয়েছে তবে স্টোরেজ প্রক্রিয়াটি রাস্তাটি পরিবর্তন করতে পারে। প্রদর্শিত কোড থেকে, ডাটাবেস স্টোরেজ প্ল্যাটফর্মটি ব্যবহৃত হচ্ছে - বা এটি কোনও ডাটাবেস হলেও ফাংশনটি বেঁধে রাখার কিছুই নেই। আমরা কেবল ধরে নিয়েছি কারণ এটি নামেই রয়েছে। আবার, ধরে নিচ্ছি যে এই প্রহেলীরা সর্বদা সংরক্ষিত রয়েছে, এই বিষয়গুলি কীভাবে / কোথায় সংরক্ষণ করা হবে তা পরিবর্তন করা সহজ।
আমি ফাংশন এবং দুটি অবজেক্টের পুনরায় চিন্তা করব যদিও আপনার একটি ফাংশন রয়েছে যা দুটি অবজেক্ট স্ট্রাকচারের উপর নির্ভরশীলতা রয়েছে এবং বিশেষত গ্রাহকরা নিযুক্ত হচ্ছে। দেখে মনে হচ্ছে এই ফাংশনটি সেই দুটি বস্তুকে একটি ক্রমযুক্ত জিনিস হিসাবে বেঁধে রাখছে যা অবিচল থাকে। আমার অন্ত্রটি আমাকে বলছে যে কোনও তৃতীয় বস্তুটি বোধগম্য হতে পারে। এই বিষয়গুলি সম্পর্কে এবং এগুলি বাস্তবে এবং প্রত্যাশিত রোডম্যাপের সাথে কীভাবে সম্পর্কিত সে সম্পর্কে আমার আরও জানতে হবে। তবে আমার অন্ত্রে সেদিকে ঝুঁকছে।
কোডটি এখন যেমন দাঁড়িয়েছে, প্রশ্নটি উঠছে "এই ফাংশনটি কোথায় হবে বা হওয়া উচিত?" এটি কি অ্যাকাউন্টের অংশ, না অন্যদিকের? কোথায় যায়?
আমার ধারণা, ইতিমধ্যে একটি তৃতীয় অবজেক্ট "ডাটাবেস" রয়েছে এবং আমি এই ফাংশনটিকে সেই বস্তুর মধ্যে রাখার দিকে ঝুঁকছি, এবং তারপরে এটি হয়ে যায় যে কোনও অ্যাকাউন্ট এবং একটি অন্যসাথে পরিচালনা করতে, রূপান্তর করতে এবং তারপরে ফলাফলটি অবিচ্ছিন্ন রাখতে পারা অবজেক্টস জব ।
আপনি যদি তৃতীয় অবজেক্টটিকে কোনও অবজেক্ট-রিলেশনাল ম্যাপিং (ওআরএম) প্যাটার্নের সাথে সামঞ্জস্য করেন তবে আরও ভাল। কোডটির সাথে কাজ করা যে কারও পক্ষে এটি বোঝা অত্যন্ত সুস্পষ্ট হয়ে উঠবে "আহ, এই যেখান থেকে অ্যাকাউন্ট এবং আওয়ারথিং একসাথে টুটা পড়ে এবং জেদ করে"।
তবে এটি কোনও সাময়িক অবজেক্টের সাথে পরিচয় করিয়ে দেওয়াও বুদ্ধিমান হতে পারে, যা কোনও অ্যাকাউন্ট এবং অন্যদিকের সংমিশ্রণ এবং রূপান্তরকরণের কাজ পরিচালনা করে, তবে অবিচল থাকার কৌশলটি পরিচালনা করে না। আমি এই কাজটি করতাম যদি আপনি এই দুটি বস্তুর সাথে বা এর মধ্যে আরও অনেকগুলি ইন্টারঅ্যাকশন অনুমান করেন, কারণ এটি বৃদ্ধি পাওয়ায় আমি চাইব দৃ b়তা বিটগুলি কেবল এমন একটি বস্তুতে তৈরি করা যা কেবল অধ্যবসায় পরিচালনা করে।
আমি ডিজাইনটি এমনভাবে রাখার জন্য অঙ্কিত করব যে কোনও একাউন্ট, আওয়ারডিং বা তৃতীয় ওআরএম অবজেক্ট অন্য তিনটি পরিবর্তন না করেই পরিবর্তন করা যায়। যদি না করার কোনও উপযুক্ত কারণ না থাকে তবে আমি চাই যে অ্যাকাউন্ট এবং আওয়ার্ডিং স্বাধীন হবে এবং একে অপরের অভ্যন্তরীণ কার্যকারিতা এবং কাঠামোগুলি জানতে হবে না।
অবশ্যই, আমি যদি এটির পুরোপুরি প্রসঙ্গটি জানতাম যে এটি হতে চলেছে তবে আমি আমার ধারণাগুলি সম্পূর্ণরূপে পরিবর্তন করতে পারি। আবার, আমি যখন এই জাতীয় জিনিসগুলি দেখি তখন ঠিক এভাবেই চিন্তা করি এবং কীভাবে ঝোঁক।