Aferen
Jika sesuatu menggunakan banyak hal yang berbeda (jumlah kopling aferen yang tinggi), maka mungkin akan mudah pecah jika ada yang berubah.
Ketidakstabilan = 1
Eferen
Jika sesuatu digunakan oleh banyak hal yang berbeda (tingginya jumlah efferent coupling), maka itu bisa cenderung merusak banyak hal jika itu berubah.
Ketidakstabilan = 0
Stabilitas
Definisi Martin tentang "stabilitas" adalah campuran eksotis antara "sulit untuk berubah" dan "memiliki beberapa alasan untuk berubah". Namun metrik ketidakstabilannya hanya menggambarkan "kesulitan untuk berubah". "Alasan untuk berubah" akan lebih banyak berkaitan dengan faktor-faktor yang tidak dapat dengan mudah dihitung, seperti hanya mendesain antarmuka Anda secara tepat, pada tingkat abstraksi yang tepat, dan memahami persyaratan pengguna akhir secara lebih jelas.
Kopling eferen yang sangat tinggi dengan kopling aferen yang rendah menghasilkan stabilitas (seperti dalam sesuatu yang sulit diubah karena akan merusak banyak hal), sebaliknya menghasilkan ketidakstabilan (seperti dalam sesuatu yang mudah diubah karena tidak akan merusak banyak barang) .
Sejumlah besar kopling aferen bisa menjadi indikator bahwa desain Anda kurang fokus - menggunakan banyak hal yang berbeda jadi mungkin tidak memiliki tanggung jawab yang jelas dan tunggal.
Sejumlah besar kopling eferen pada awalnya dapat diartikan sebagai hal yang sangat baik, karena ini menunjukkan bahwa desain Anda sedang digunakan secara luas. Namun itu akan buruk jika Anda merasa tergoda untuk sering mengubah desain dengan cara yang merusak segalanya. Jadi dengan sejumlah besar kopling eferen datang kebutuhan untuk paket tersebut memiliki "sedikit atau tidak ada alasan untuk berubah". Desain harus stabil dalam arti ideal tidak memiliki alasan untuk berubah, karena mereka juga akan sangat sulit untuk diubah.
Prinsip Abstraksi Yang Stabil
Konsep seperti inversi ketergantungan (yang secara alami membutuhkan injeksi ketergantungan) dan SAP (prinsip abstraksi yang stabil) semuanya menunjukkan bahwa dependensi mengalir ke arah abstraksi. Dan ada alasan sederhana mengapa ketika mempertimbangkan "stabilitas" dalam konteks memiliki "beberapa alasan untuk berubah". Antarmuka abstrak tidak menyebutkan detail konkret, hanya berfokus pada "apa yang harus dilakukan" dan bukan "apa yang ada", dan dengan demikian memiliki lebih sedikit alasan untuk berubah. Port grafis yang dipercepat di motherboard kami (antarmuka abstrak) memiliki lebih sedikit alasan untuk menjalani perubahan desain daripada GPU yang dihubungkan ke dalamnya (detail konkret).
Dapat digunakan kembali vs digunakan kembali
Jenis metrik pribadi saya sendiri jika saya dapat menyarankan satu yang agak bertabrakan dengan Martin adalah gagasan ini saya ingin menekankan bahwa perpustakaan yang paling dapat digunakan kembali harus berusaha untuk menggunakan kembali kode lain secara minimal. Itu mendorong ketidakstabilan menuju angka 0. Ini karena alasan praktis memiliki alasan minimum untuk berubah, tetapi juga untuk mempromosikan perpustakaan termudah untuk digunakan. Perpustakaan tujuan umum dan banyak digunakan yang bergantung pada selusin perpustakaan yang berbeda memiliki banyak alasan untuk berubah, serta distribusi yang dibuat dengan canggung yang mungkin sulit untuk digunakan. Perbedaannya di sini adalah bahwa "alasan untuk berubah" dalam kasus saya meluas bahkan ke implementasi, karena itu datang dari tampilan berorientasi perpustakaan yang berusaha untuk merilis versi stabil perpustakaan. Martin mungkin mengabaikan implementasi sebagai bagian yang sangat terpisah,
Dari sudut pandang distribusi, implementasi dan antarmuka kabur bersama untuk menghasilkan dependensi pengguna ke pustaka yang stabil atau tidak stabil. Dari sudut pandang antarmuka, hanya antarmuka yang digunakan dan detail implementasi yang terkait sepenuhnya terpisah.