Kapcsolás vs kohézió
A csatolás és a kohézió két fogalom, amely megtalálható a Java-ban (és az összes többi objektumorientált nyelvben). A csatolás azt méri, hogy az egyes programmodulok mennyire függenek a többi programmodultól. A kohézió azt méri, hogy az egyes funkciók milyen erősen kapcsolódnak egymáshoz egy modulon belül. Valójában minden objektum-orientált nyelvnek (beleértve a Java-t is) a két fő célja a kohézió növelése és a csatolás csökkentése egyidejűleg a leghatékonyabb programok fejlesztése érdekében. Ezt a két szoftverfejlesztési mérőszámot Larry Constantine fejlesztette ki, hogy csökkentse a szoftver módosításának és karbantartásának költségeit.
Mi az a kohézió?
A kohézió azt méri, hogy az egyes funkciók milyen erősen kapcsolódnak egymáshoz egy programmodulon belül. A jól felépített órák nagyon összetartó programokhoz vezetnek. Ha egy bizonyos osztály nagyon összefüggő funkciók halmazát hajtja végre, akkor azt az osztályt összetartónak mondjuk. Másrészt, ha egy osztály egy csomó teljesen független funkciót hajt végre, az azt jelenti, hogy az osztály egyáltalán nem kohéziós. Fontos megérteni, hogy az összetartás hiánya nem jelenti azt, hogy az általános alkalmazás nem rendelkezik a szükséges funkciókkal. Csupán arról van szó, hogy kohézió nélkül nagyon nehéz lesz kezelni a funkcionalitást, mert sok rossz helyen lesznek szétszórva, ahogy az alkalmazás összetettsége idővel növekszik. A kódban szétszórt viselkedések fenntartása, módosítása és kiterjesztése még a legtapaszt altabb programozók számára is nagyon fárasztó.
Mi az a csatolás?
A csatolás azt méri, hogy az egyes programmodulok mennyire függenek a többi programmodultól. Kölcsönhatások két objektum között azért jönnek létre, mert van csatolás. A lazán csatolt programok nagyfokú rugalmasságot és bővíthetőséget biztosítanak. Az erős csatolás soha nem jó, mert az egyik objektum nagymértékben függhet egy másik objektumtól. Ez egy rémálom, amikor a kódot módosítják, mert a magas csatolás azt jelenti, hogy a programozóknak több helyen kell dolgozniuk a kódon akár egyetlen viselkedésmódosításhoz is. Az erős csatolás mindig alacsony rugalmasságú és kevésbé skálázható/bővíthető programokhoz vezet. Az olyan programozási nyelvekben azonban, mint a Java, lehetetlen teljesen elkerülni a csatolást. Javasoljuk azonban, hogy a programozók minden tőlük telhetőt megtegyenek, hogy a lehető legnagyobb mértékben csökkentsék a csatolást. Az is lehetséges, hogy néhány csatolás segítse az objektumok egymás közötti interakcióját anélkül, hogy akadályozná a méretezhetőséget és a rugalmasságot.
Mi a különbség a csatolás és a kohézió között?
Annak ellenére, hogy a csatolás és a kohézió a szoftvermérnöki modulok minőségével foglalkozik, ezek teljesen különböző fogalmak. A Cohesion arról beszél, hogy a funkcionalitások mennyire kapcsolódnak egymáshoz a modulon belül, míg a csatolás azzal foglalkozik, hogy az egyik modul mennyire függ a többi programmodultól az egész alkalmazáson belül. A legjobb minőségű szoftver elérése érdekében a kohéziónak és a csatolásnak el kell érnie spektruma két ellentétes végét. Más szóval, a laza csatolás és az erős kohézió biztosítja a legjobb szoftvert. A privát mezők, a nem nyilvános osztályok és a privát metódusok laza csatolást biztosítanak, miközben az összes tag láthatóvá válik az osztályon belül, és a csomag alapértelmezett láthatósága nagy kohéziót biztosít.