Indikator nomor satu dari modul yang digabungkan secara buruk menurut saya adalah ketergantungan bilateral. Sebagai contoh, Module1 satu memanggil beberapa fungsi di Module2 dan Module2 memanggil beberapa fungsi di Module1.
Sebagian besar antarmuka harus searah. Jika modul yang dipanggil perlu meneruskan beberapa informasi ke modul panggilan yang tidak dikembalikan sebagai bagian dari panggilan maka harus menggunakan semacam pesan yang lewat atau mekanisme pemicu peristiwa seperti antrian pesan. Idealnya, antarmuka untuk menyampaikan pesan harus diteruskan selama beberapa proses inisialisasi atau pendaftaran. Ini sepenuhnya mengabstraksi antarmuka sedemikian rupa sehingga modul tidak benar-benar peduli untuk siapa acara ini ... karena itu dipisahkan.
Indikasi lain adalah ketika satu modul terus-menerus memanggil beberapa modul lain untuk beberapa set data tertentu. Ini akan membuat Anda mempertanyakan siapa yang sebenarnya memiliki kumpulan data. Mengapa modul ini dipertanyakan selalu perlu melihat data yang dimiliki beberapa modul lainnya?
Alat ketiga untuk berbicara adalah bertanya pada diri sendiri, "Dapatkah saya mengeluarkan modul ini dan menggantinya tanpa memerlukan perubahan pada modul lain.
Ini bukan daftar lengkap, tetapi mereka adalah tiga hal teratas yang saya tanyakan pada diri saya ketika merancang perangkat lunak.