আমার জন্য এটি একটি সংযোগের সমস্যা এবং ডিজাইনের গ্রানুলারিটি সম্পর্কিত। এমনকি মিলনের সবচেয়ে শিথিল রূপটি একটি জিনিস থেকে অন্যটিতে নির্ভরতার পরিচয় দেয়। এটি যদি কয়েক হাজার থেকে হাজার হাজার অবজেক্টের জন্য করা হয়, যদিও তারা সমস্ত তুলনামূলকভাবে সহজ, এসআরপি মেনে চলা এবং সমস্ত নির্ভরতা স্থিতিশীল বিমূর্তির দিকে প্রবাহিত হলেও, এটি একটি কোডবেস দেয় যা একটি আন্তঃসম্পর্কিত পুরো হিসাবে যুক্তি করা খুব কঠিন।
এমন ব্যবহারিক জিনিসগুলি রয়েছে যা আপনাকে কোনও কোডবেসের জটিলতা নির্ধারণ করতে সহায়তা করে, তাত্ত্বিক এসইতে প্রায়শই আলোচিত হয় না, যেমন শেষ পর্যায়ে পৌঁছানোর আগে আপনি কল স্ট্যাকের গভীরতা কতটা পেতে পারেন এবং আপনি যা করার আগে আপনাকে কতটা গভীরভাবে যেতে হবে, এর সাথে আত্মবিশ্বাসের একটি মহান বিষয়, কোনও ব্যতিক্রমের ঘটনা সহ কল স্ট্যাকের সেই স্তরে ঘটতে পারে এমন সমস্ত সম্ভাব্য পার্শ্ব প্রতিক্রিয়াগুলি বুঝতে understand
এবং আমি খুঁজে পেয়েছি, কেবল আমার অভিজ্ঞতার মধ্যে, অল্প অল্প কল স্ট্যাকযুক্ত চাটুকার সিস্টেমগুলি সম্পর্কে বিতর্ক করা খুব সহজ হতে থাকে। চূড়ান্ত উদাহরণ হ'ল একটি সত্তা-উপাদান সিস্টেম যেখানে উপাদানগুলি কেবল কাঁচা ডেটা। কেবলমাত্র সিস্টেমগুলির কার্যকারিতা রয়েছে এবং ইসিএস প্রয়োগ ও ব্যবহারের প্রক্রিয়ায় আমি এটিকে এখনও সবচেয়ে সহজ সিস্টেম হিসাবে খুঁজে পেয়েছি, কারণ কয়েক হাজার সিস্টেমের কয়েক হাজার লাইনের বিস্তৃত জটিল কোডবেসগুলি কয়েক ডজন সিস্টেমে ফোটায় যে সম্পর্কে সমস্ত কার্যকারিতা ধারণ করে।
অনেকগুলি জিনিস কার্যকারিতা সরবরাহ করে
পূর্ববর্তী কোডবেসে কাজ করার আগে বিকল্প ছিল কয়েক শতাধিক বাল্ক সিস্টেমের বিপরীতে কয়েক থেকে একাধিক ক্ষুদ্র ক্ষুদ্র বস্তু সহ এমন একটি সিস্টেম যা কেবলমাত্র একটি বস্তু থেকে অন্য বস্তুর কাছে বার্তা প্রেরণের জন্য ব্যবহৃত কিছু বস্তুর সাথে ব্যবহৃত হত ( Message
বস্তু, উদাহরণস্বরূপ, যার এটি ছিল) নিজস্ব পাবলিক ইন্টারফেস)। আপনি যখন ইসিএসকে এমন একটি বিন্দুতে ফিরিয়ে দেন যখন উপাদানগুলির কার্যকারিতা থাকে এবং কোনও সত্তায় উপাদানগুলির প্রতিটি অনন্য সংমিশ্রণ তার নিজস্ব অবজেক্টের ধরণের ফল দেয় তখন মূলত আপনি অ্যানালগালিটি পান ically এবং এটি ছোট, সহজ ফাংশনগুলি উত্তরাধিকার সূত্রে প্রাপ্ত এবং অবৈধ ধারণাগুলির মডেল যা অবাস্তব ধারণাগুলি ( Particle
অবজেক্ট বনাম) মডেল করে providedPhysics System
, যেমন)। তবে আন্তঃ নির্ভরতাগুলির একটি জটিল গ্রাফও পাওয়া যায় যা বিস্তৃত স্তর থেকে কী ঘটেছিল তা নিয়ে तर्क করা কঠিন করে তোলে, কেবল কারণ কোডবেজে এমন অনেক কিছুই রয়েছে যা আসলে কিছু করতে পারে এবং তাই কিছু ভুল করতে পারে - - প্রকারগুলি যা "ডেটা" প্রকার নয়, তবে সম্পর্কিত কার্যকারিতা সহ "অবজেক্ট" প্রকার। সম্পর্কিত কোনও কার্যকারিতা ছাড়াই বিশুদ্ধ ডেটা হিসাবে পরিবেশন করা ধরণগুলি ভুল হতে পারে না কারণ তারা নিজেরাই কিছু করতে পারে না।
খাঁটি ইন্টারফেসগুলি এই বোধগম্যতার সমস্যাটিকে এতটা সহায়তা করে না কারণ এটি "সংকলন-সময় নির্ভরতা" কম জটিল করে তোলে এবং পরিবর্তন এবং প্রসারণের জন্য আরও শ্বাসকষ্ট সরবরাহ করে, এটি "রানটাইম নির্ভরতা" এবং ইন্টারঅ্যাকশনগুলিকে কোনও কম জটিল করে তোলে না। ক্লায়েন্ট অবজেক্টটি এখনও কংক্রিট অ্যাকাউন্ট অবজেক্টে কল করা সত্ত্বেও তাদেরকে অনুরোধ করা ফাংশনগুলি শেষ করে IAccount
। পলিমারফিজম এবং অ্যাবস্ট্রাক্ট ইন্টারফেসগুলির ব্যবহার রয়েছে তবে তারা এমনভাবে জিনিসগুলিকে ডিকুয়াল করে না যা আপনাকে কোনও নির্দিষ্ট সময়ে যেতে পারে এমন সমস্ত পার্শ্ব প্রতিক্রিয়াগুলির বিষয়ে যুক্তিযুক্তভাবে সত্যই সহায়তা করে। এই ধরণের কার্যকর ডিকোপলিং অর্জন করার জন্য আপনার একটি কোডবেস দরকার যা কার্যকারিতা সহ অনেক কম জিনিস রাখে।
আরও ডেটা, কার্যকারিতা কম
সুতরাং আমি ইসিএস পদ্ধতির সন্ধান পেয়েছি, এমনকি আপনি এটি সম্পূর্ণরূপে প্রয়োগ না করেও চূড়ান্ত সহায়ক হতে পারেন, যেহেতু এটি পরিণত হয় শত শত বস্তুগুলি কেবলমাত্র বিশাল আকারের সিস্টেমের সাথে কাঁচা ডেটাতে পরিণত হত, আরও মোটাভাবে নকশাকৃত, যা সমস্ত সরবরাহ করে কার্যকারিতা। এটি "ডেটা" প্রকারের সংখ্যা সর্বাধিক করে তোলে এবং "অবজেক্ট" ধরণের সংখ্যা হ্রাস করে এবং তাই আপনার সিস্টেমে এমন জায়গাগুলির সংখ্যা একেবারে হ্রাস করে যা আসলে ভুল হতে পারে। শেষ ফলাফলটি হ'ল একটি "সমতল" সিস্টেম যা নির্ভরশীলতার জটিল গ্রাফ ছাড়াই, কেবলমাত্র উপাদানগুলির জন্য সিস্টেম, কখনও তদ্বিপরীত হয় না এবং অন্য উপাদানগুলির সাথে কখনই উপাদান হয় না। এটি মূলত অনেক বেশি কাঁচা ডেটা এবং অনেক কম অ্যাবস্ট্রাকশন যার প্রভাব রয়েছে মূল কোডগুলি, কী বিমূর্তিগুলিতে কোডবেসের কার্যকারিতাকে কেন্দ্রিয়করণ এবং সমতলকরণের।
30 টি সহজ জিনিস 1 টিরও বেশি জটিল বিষয় নিয়ে যুক্তিযুক্ত হওয়া সহজভাবে সহজ নয়, যদি 30 টি সহজ জিনিস আন্তঃসম্পর্কিত হয় যখন জটিল জিনিসটি তার নিজের উপর দাঁড়িয়ে থাকে। সুতরাং আমার পরামর্শটি হ'ল বস্তুগুলির মধ্যে মিথস্ক্রিয়া থেকে আরও বেশি কিছুকে বাল্কিয়ার অবজেক্টের দিকে স্থানান্তর করা যা ভর ডিকোপলিং অর্জনের জন্য অন্য কোনও কিছুর সাথে ইন্টারঅ্যাক্ট করতে হবে না, পুরো "সিস্টেমে" (একচেটিয়া এবং godশ্বরের বস্তু নয়, আপনাকে মনে রাখবেন, এবং 200 পদ্ধতি সহ ক্লাস নয়, তবে একটি সংক্ষিপ্ত ইন্টারফেস থাকা সত্ত্বেও একটি Message
বা একটি এর চেয়ে যথেষ্ট উচ্চ স্তরের কিছু Particle
)। এবং আরও সাধারণ প্লেইন পুরানো ডেটা প্রকারের পক্ষে আপনি তাদের উপর যত বেশি নির্ভরশীল, কম সংযোগ আপনি পাবেন। এমনকি যদি এটি কিছু এসই ধারণার বিরোধিতা করে তবে আমি খুঁজে পেয়েছি এটি সত্যিই অনেক সাহায্য করে।