Reka bentuk untuk perubahan: Gandingan dan perpaduan dalam sistem berorientasikan objek

Gandingan dan kohesi adalah dua istilah yang sering disalahpahami dalam kejuruteraan perisian. Ini adalah istilah yang digunakan untuk menunjukkan analisis kualitatif modulariti dalam sistem, dan ini membantu kita untuk mengenal pasti dan mengukur kerumitan reka bentuk sistem berorientasikan objek.

Walau bagaimanapun, pengetahuan yang baik mengenai kedua-duanya diperlukan untuk membina sistem yang dapat ditingkatkan, dikendalikan dan dapat diperluas dari masa ke masa. Dalam catatan ini, saya akan membincangkan kedua-duanya; Saya akan mengemukakan contoh kod dalam catatan masa depan saya mengenai topik ini.

Bagaimana kohesi dan gandingan berbeza? Bagaimana konsep kohesi dan gandingan berkaitan dengan reka bentuk perisian yang baik atau buruk? Sebelum kita meneroka kohesi dan gandingan serta bagaimana ia mempengaruhi reka bentuk perisian, mari kita fahami apa itu setiap konsep dan jenisnya.

Gandingan

Gandingan boleh didefinisikan sebagai tahap saling bergantung yang wujud antara modul perisian dan seberapa erat hubungannya antara satu sama lain. Pada dasarnya, gandingan menunjukkan kekuatan hubungan antara modul perisian. Apabila gandingan ini tinggi, kita mungkin menganggap bahawa modul perisian saling bergantung, iaitu, mereka tidak dapat berfungsi tanpa yang lain. Terdapat beberapa dimensi gandingan:

  • Gandingan kandungan - ini adalah jenis gandingan di mana modul tertentu dapat mengakses atau mengubah kandungan modul lain. Pada dasarnya, apabila komponen melewati parameter untuk mengawal aktiviti beberapa komponen lain, terdapat gandingan kawalan di antara kedua komponen tersebut.
  • Gandingan biasa - ini adalah jenis gandingan di mana anda mempunyai banyak modul yang mempunyai akses ke data global yang dikongsi
  • Gandingan setem - ini adalah jenis gandingan di mana struktur data digunakan untuk menyampaikan maklumat dari satu komponen dalam sistem ke komponen lain
  • Gandingan kawalan - ini adalah jenis gandingan di mana satu modul dapat mengubah aliran pelaksanaan modul lain
  • Gandingan data - dalam jenis gandingan ini, dua modul berinteraksi dengan bertukar atau menyampaikan data sebagai parameter

Perpaduan

Kohesi menunjukkan tahap kebergantungan antara elemen modul perisian. Dengan kata lain, Kohesi adalah ukuran sejauh mana tanggungjawab satu modul atau komponen membentuk unit yang bermakna. Kohesi adalah dari jenis berikut:

  • Perpaduan bersama - ini adalah kohesi rawak yang tidak dirancang yang mungkin disebabkan oleh pemecahan modul menjadi modul yang lebih kecil.
  • Kohesi logik - ini adalah jenis kohesi di mana pelbagai fungsi atau elemen data yang berkaitan secara logik diletakkan dalam komponen yang sama
  • Kohesi sementara - ini adalah sejenis kohesi di mana unsur-unsur modul dikelompokkan dengan cara di mana mereka diproses pada waktu yang sama. Contohnya adalah komponen yang digunakan untuk menginisialisasi sekumpulan objek.
  • Prosedur kohesi - ini adalah sejenis kohesi di mana fungsi-fungsi dalam komponen dikelompokkan dengan cara yang membolehkan mereka dilaksanakan secara berurutan dan menjadikannya bersatu secara prosedural
  • Perpaduan komunikasi - dalam kohesi jenis ini unsur-unsur modul dikumpulkan secara logik dengan cara yang mereka laksanakan secara berurutan dan mereka menggunakan data yang sama
  • Perpaduan berturutan - dalam kohesi jenis ini unsur-unsur modul dikelompokkan sedemikian rupa sehingga output salah satu daripadanya menjadi input yang seterusnya - semuanya dilaksanakan secara berurutan. Pada hakikatnya, jika output satu bahagian komponen adalah input yang lain, kita mengatakan bahawa komponen tersebut mempunyai kohesi berurutan.
  • Fungsi kohesi - ini adalah jenis kohesi yang terbaik dan paling disukai di mana tahap kohesi adalah yang tertinggi. Dalam kohesi jenis ini, unsur-unsur modul dikelompokkan secara fungsional ke dalam unit logik dan mereka berfungsi bersama sebagai unit logik - ini juga mendorong fleksibiliti dan kebolehgunaan semula.

Amalan terbaik

Gandingan ketat meningkatkan kos penyelenggaraan kerana sukar dan perubahan pada satu komponen akan mempengaruhi semua komponen lain yang bersambung dengannya. Jadi, pemfaktoran semula kod menjadi sukar kerana anda perlu memfaktorkan semula semua komponen lain dalam rantai bersambung supaya fungsinya tidak rosak. Proses ini membebankan dan memerlukan banyak usaha dan masa yang membosankan. 

Anda harus merancang kelas yang mengandungi bilangan pemboleh ubah contoh yang kurang, iaitu, reka bentuk kelas anda "baik" jika mengandungi sebilangan kecil pemboleh ubah contoh. Sebaik-baiknya, setiap kaedah di kelas anda harus memanipulasi satu atau lebih pemboleh ubah contoh ini. Secara teorinya, kelas secara kohesif maksimum jika setiap pemboleh ubah contoh kelas digunakan atau dimanipulasi oleh setiap kaedah kelas tersebut. Apabila kohesi dalam kelas tinggi kaedah dan data anggota kelas saling bergantung dan bekerjasama sebagai satu unit logik. Walau bagaimanapun, pada kenyataannya tidak mungkin untuk merancang kelas seperti itu atau saya lebih suka mengatakan, tidak dianjurkan untuk merancang kelas yang sepadu secara maksimum.