Spajanje protiv kohezije
Spajanje i kohezija dva su pojma koji se nalaze u Javi (i svim ostalim jezicima orijentiranim na objektima). Spajanje mjeri koliko svaki od programskih modula ovisi o ostalim programskim modulima. Kohezija mjeri koliko je svaka funkcija povezana u modulu. Zapravo, bilo koji objektno orijentirani jezik (uključujući Java) ima dva glavna cilja povećati kohezivnost i istovremeno smanjiti povezivanje, kako bi se razvili najučinkovitiji programi. Ove dvije metrike softverskog inženjerstva razvio je Larry Constantine kako bi smanjio troškove izmjene i održavanja softvera.
Što je kohezija?
Kohezija mjeri koliko su sve funkcije povezane unutar programskog modula. Dobro strukturirana nastava vodi do visoko kohezivnih programa. Ako određena klasa obavlja skup visoko povezanih funkcija, za ovu klasu se kaže da je kohezivna. S druge strane, ako klasa izvodi gomilu potpuno nepovezanih funkcionalnosti, što znači da klasa uopće nije kohezivna. Važno je razumjeti da to što nema kohezivnosti ne znači da cjelokupna aplikacija nema potrebnu funkcionalnost. Jednostavno je, bez kohezije, biti će vrlo teško upravljati funkcionalnošću jer će se one raspršiti na mnogim pogrešnim mjestima jer se složenost aplikacije s vremenom povećava. Održavanje, mijenjanje i produžavanje ponašanja razasutih po cijelom kodu vrlo je naporno čak i za programere s većim iskustvom.
Što je spajanje?
Spajanje mjeri koliko svaki od programskih modula ovisi o ostalim programskim modulima. Do interakcije između dva objekta dolazi jer dolazi do spajanja. Labavo povezani programi visoki su fleksibilnost i proširivost. Čvrsto spajanje nikad nije dobro jer jedan objekt može jako ovisiti o nekom drugom objektu. Ovo je noćna mora kad je kôd modificiran, jer veliko povezivanje znači da programeri moraju raditi na nekoliko mjesta koda čak i za jednu promjenu ponašanja. Čvrsta povezanost uvijek vodi do programa s malom fleksibilnošću i manjom skalabilnošću / proširivošću. Međutim, u programskim jezicima kao što je Java, potpuno izbjegavanje povezivanja je nemoguće. Ali preporučuje se da se programeri maksimalno potrude kako bi što više smanjili spojku. Moguće je i spajanje kako bi se objekti međusobno koristio bez ometanja njegove skalabilnosti i fleksibilnosti.
Koja je razlika između spajanja i kohezije?
Iako se spajanje i kohezija bave kvalitetom modula u programskom inženjerstvu, to su potpuno različiti koncepti. Kohezija govori o tome koliko su funkcionalnosti međusobno povezane unutar modula, dok se povezivanje bavi koliko jedan modul ovisi o drugim programskim modulima unutar cijele aplikacije. Da bi imali najkvalitetniji softver, kohezija i spajanje trebali bi dosegnuti dva suprotna kraja njihovog spektra. Drugim riječima, labava spojka i snažna kohezija pružaju najbolji softver. Posjedovanje privatnih polja, nejavnih klasa i privatnih metoda omogućuje labavo spajanje, dok čine svi članovi vidljivim unutar klase i imaju paket kao zadanu vidljivost visoku koheziju..