Spojování vs. soudržnost
Spojování a soudržnost jsou dva pojmy, které se nacházejí v Javě (a ve všech ostatních objektově orientovaných jazycích). Spojení měří, do jaké míry jsou každý z programových modulů závislé na ostatních programových modulech. Soudržnost měří, jak silně jsou všechny funkce v modulu spojeny. Ve skutečnosti má jakýkoli objektově orientovaný jazyk (včetně Java) dva hlavní cíle: zvýšit soudržnost a současně snížit spojitost, aby bylo možné vyvinout nejúčinnější programy. Tyto dvě metriky softwarového inženýrství byly vyvinuty Larry Constantineem, aby se snížily náklady na úpravu a údržbu softwaru.
Co je soudržnost?
Soudržnost měří, jak silně jsou všechny funkce v rámci programového modulu propojeny. Dobře strukturované třídy vedou k vysoce soudržným programům. Pokud určitá třída plní řadu vysoce souvisejících funkcí, říká se, že tato třída je soudržná. Na druhou stranu, pokud třída provádí spoustu zcela nesouvisejících funkcí, což znamená, že třída vůbec není soudržná. Je důležité pochopit, že nemá soudržnost neznamená, že celková aplikace nemá požadovanou funkčnost. Je to jen to, že bez soudržnosti bude velmi obtížné ovládat funkčnost, protože budou rozptýleny na mnoha nesprávných místech, protože se postupem času zvyšuje složitost aplikace. Udržování, úprava a rozšiřování chování rozptýlených po celém kódu je velmi únavné i pro ty nejzkušenější programátory..
Co je Coupling?
Spojení měří, do jaké míry jsou každý z programových modulů závislé na ostatních programových modulech. K interakcím mezi dvěma objekty dochází, protože existuje vazba. Volně spojené programy mají vysokou flexibilitu a rozšiřitelnost. Silná vazba není nikdy dobrá, protože jeden objekt může být vysoce závislý na jiném objektu. Toto je noční můra, když je kód upraven, protože vysoká vazba znamená, že programátoři potřebují pracovat na několika místech kódu, dokonce i pro jednu změnu chování. Silné propojení vždy vede k programům s nízkou flexibilitou a menší škálovatelností / rozšiřitelností. Avšak v programovacích jazycích, jako je Java, je nemožné úplně se vyhnout spojení. Doporučuje se však, aby programátoři vyvinuli maximální úsilí, aby co nejvíce omezili spojování. Je také možné mít nějaké spojení, které pomůže objektům vzájemně komunikovat, aniž by to narušovalo jeho škálovatelnost a flexibilitu.
Jaký je rozdíl mezi vazbou a soudržností?
Přestože spojování a soudržnost se zabývají kvalitou modulu v softwarovém inženýrství, jedná se o zcela odlišné koncepty. Soudržnost hovoří o tom, do jaké míry jsou funkce v rámci modulu vzájemně propojeny, zatímco vazba pojednává o tom, do jaké míry je jeden modul závislý na ostatních programových modulech v celé aplikaci. Aby byl software nejvyšší kvality, měla by soudržnost a vazba dosáhnout dvou protilehlých konců jejich spektra. Jinými slovy, nejlepší software poskytuje volná vazba a silná soudržnost. Díky soukromým polím, neveřejné třídy a soukromé metody zajišťují volné propojení, zatímco zviditelňují všechny členy ve třídě a mají jako výchozí viditelnost balíček poskytující vysokou soudržnost.