আমার মতে খারাপভাবে মিলিত মডিউলগুলির এক নম্বর সূচকটি দ্বিপক্ষীয় নির্ভরতা। উদাহরণস্বরূপ, Module1 একটিকে Module2 এ কিছু ফাংশন কল করে এবং Module2 Module1 এ কিছু ফাংশন কল করে।
বেশিরভাগ ইন্টারফেস একমুখী হতে হবে। কল করা মডিউলটি যদি কলিংয়ের অংশ হিসাবে ফিরে আসে না এমন কলিং মডিউলটিতে কিছু তথ্য প্রেরণের প্রয়োজন হয় তবে তার কোনও বার্তা পাসিং বা ইভেন্ট ট্রিগার প্রক্রিয়া যেমন কোনও বার্তা সারি ব্যবহার করা উচিত। আদর্শভাবে, কিছু সূচনা বা নিবন্ধীকরণ প্রক্রিয়া চলাকালীন হ্যান্ডেল টু মেসেজ পাসিং ইন্টারফেসটি প্রবেশ করতে হবে। এটি ইন্টারফেসটি পুরোপুরি এমনভাবে বিমূর্ত করে দেয় যে মডিউলটি ঘটনাটি কার জন্য তা আসলে যত্নশীল করে না ... সুতরাং এটি ডিকম্পলড।
আরেকটি ইঙ্গিতটি হ'ল যখন কোনও মডিউল ক্রমাগত কিছু নির্দিষ্ট ডেটা সেটের জন্য অন্য কোনও মডিউলকে কল করে। এটি আপনাকে প্রশ্ন করা উচিত যে ডেটা সেটটির প্রকৃতপক্ষে কার মালিক হওয়া উচিত। কেন এই প্রশ্নটিতে এই মডিউলটিকে সবসময় অন্য কোনও মডিউলের সাথে সম্পর্কিত ডেটা দেখার প্রয়োজন হয়?
তৃতীয় একটি উপায় বলতে গেলে নিজেকে জিজ্ঞাসা করা উচিত, "আমি কি এই মডিউলটি বাইরে টেনে এনে প্রতিস্থাপন করতে পারি এবং অন্য মডিউলগুলিতে পরিবর্তন না করেই এটিকে প্রতিস্থাপন করতে পারি।
এটি কোনওভাবেই একটি বিস্তৃত তালিকা নয়, তবে তারা সফ্টওয়্যার ডিজাইন করার সময় আমি নিজেকে জিজ্ঞাসা করা শীর্ষ তিনটি বিষয়।