Low Coupling dan High Cohesion
Coupling dapat juga disebut dependency. Makna bebasnya adalah suatu ketergantungan yang dimiliki suatu class terhadap class yang lain. Batasan coupling dimulai dari ‘high coupling’ hingga ‘low coupling. Disebut ‘no coupling’ jika benar2 tidak ada ketergantungan antar class. Sebuah aplikasi dikatakan baik, jika modulnya bersifat low coupling.
Sebagai contoh : Kita membuat class Manusia. Lalu menciptakan variabel object dari class tangan, class badan, class kaki, dan class kepala. Setelah itu kita definisikan method tidur, makan, bicara, berjalan. Dapat terbayang untuk makan saja, kita harus mendeskripsikan aktivitas cuci tangan (yang dilakukan class tangan), proses makan (yang dilakukan class kepala), lalu kenyang (diekspresikan oleh class badan).
Hal diatas ‘high coupling’, ketergantungan dengan class lain begitu tinggi. Dan sebaiknya, modul itu harus diubah menjadi ‘low coupling’. Kenapa? salah satunya adalah, ini menyebabkan proses testing menjadi ‘tanggung’, karena class manusia tergantung dengan class2 lain yang bisa saja isinya berubah. Ini menyebabkan class menjadi tidak reusable.
Bagaimana mengubahnya menjadi low coupling? Buatlah class2 anggota tubuh tadi menjadi interface, lalu biarkan class manusia mengimplementasi abstraksinya. Dengan demikian ini tidak akan mengganggu perubahan di masing2 sisi class. Misalnya : tiba2 dibentuk class Hobbit yang juga memiliki anggota tubuh, tapi berbeda perilakunya.
Secara ga langsung class yang low coupling akan mengarahkan class berkarakter ‘high cohesion’. vice versa.
Cohesion menunjukkan tanggung jawab dari sebuah class. Semakin besar tanggung jawab dan fungsional class, class ini menjadi bloated dan semakin low cohesion. Maka sebaiknya fungsi2(method) class dibuat menjadi lebih spesifik tanggung jawabnya atau high cohesion. Misal method getCustimer() , jelas spesifik hanya mengembalikan nama customer.
Dengan kedua kombinasi tersebut, class2 akan menjadi mudah dibaca, dipelihara, reusable, dan kompleksitas ketergantungannya menjadi lebih terjaga.
CMIIW ya…