Asumsikan kita memiliki modul perangkat lunak A yang mengimplementasikan fungsi F. Modul B lainnya mengimplementasikan fungsi yang sama dengan F '.
Ada beberapa cara untuk menghilangkan kode duplikat:
- Biarkan A menggunakan F 'dari B.
- Biarkan B menggunakan F dari A.
- Masukkan F ke dalam modul C-nya sendiri dan biarkan A dan B menggunakannya.
Semua opsi ini menghasilkan dependensi tambahan antar modul. Mereka menerapkan prinsip KERING dengan biaya meningkatkan sambungan.
Sejauh yang saya bisa lihat, kopling selalu meningkat atau disewa pindah ke tingkat yang lebih tinggi saat menerapkan KERING. Tampaknya ada konflik antara dua prinsip paling mendasar dari desain perangkat lunak.
(Sebenarnya saya tidak merasa heran bahwa ada konflik seperti itu. Ini mungkin yang membuat desain perangkat lunak yang baik sangat sulit. Saya menemukan mengejutkan bahwa konflik ini biasanya tidak dibahas dalam teks pengantar.)
Sunting (untuk klarifikasi): Saya berasumsi bahwa kesetaraan F dan F 'bukan hanya kebetulan. Jika F harus dimodifikasi, F 'kemungkinan harus dimodifikasi dengan cara yang sama.