Povezovanje proti koheziji
Povezovanje in kohezija sta dva pojma, ki ju najdemo v Javi (in vseh drugih predmetnih jezikih). Povezovanje meri, koliko je vsak programski modul odvisen od ostalih programskih modulov. Kohezija meri, kako močno je vsaka funkcija povezana v modulu. Pravzaprav ima vsak ciljno usmerjen jezik (vključno z Java) dva glavna cilja, da povečata povezanost in hkrati zmanjšata sklopitev, da bi razvili najučinkovitejše programe. Te dve metriki programskega inženiringa je razvil Larry Constantine, da je zmanjšal stroške za spreminjanje in vzdrževanje programske opreme.
Kaj je kohezija?
Kohezija meri, kako močno je vsaka od funkcij povezana v programskem modulu. Dobro strukturirani razredi vodijo do zelo kohezivnih programov. Če določen razred izvaja niz zelo povezanih funkcij, naj bi bil ta razred koheziven. Po drugi strani pa, če razred izvaja kup popolnoma nepovezanih funkcionalnosti, kar pomeni, da razred sploh ni koheziven. Pomembno je razumeti, da pomanjkanje kohezivnosti še ne pomeni, da celotna aplikacija nima zahtevane funkcionalnosti. Samo, da bo brez kohezije zelo težko upravljati funkcionalnost, saj se bodo raztresene na mnogih napačnih mestih, saj se sčasoma povečuje kompleksnost aplikacije. Vzdrževanje, spreminjanje in razširjanje vedenj, razpršenih po šifri, je zelo dolgočasno tudi za najbolj izkušene programerje.
Kaj je sklopka?
Povezovanje meri, koliko je vsak programski modul odvisen od ostalih programskih modulov. Interakcije med dvema objektoma se zgodijo, ker obstaja sklopka. Ohlapno povezani programi so zelo prožni in razširljivi. Močna sklopitev ni nikoli dobra, ker je en predmet lahko zelo odvisen od kakšnega drugega predmeta. To je nočna mora, ko je koda spremenjena, saj visoka sklopitev pomeni, da morajo programerji delati na več krajih kode za celo eno spremembo vedenja. Močna sklopka vedno pripelje do programov z nizko prilagodljivostjo in manjšo razširljivostjo / razširljivostjo. Vendar pa se v programskih jezikih, kot je Java, popolnoma izogniti spajanju, ni mogoče. Priporočamo pa, da se programerji po svojih najboljših močeh trudijo, da bi sklopko čim bolj zmanjšali. Možno je tudi nekaj sklopke, s pomočjo katere bodo objekti medsebojno vplivali, ne da bi pri tem ovirali njegovo razširljivost in prožnost.
Kakšna je razlika med sklopitvijo in kohezijo?
Čeprav se povezovanje in kohezija ukvarjata s kakovostjo modula v programskem inženiringu, sta povsem drugačna koncepta. Kohezija govori o tem, koliko funkcionalnosti so med seboj povezane v modulu, medtem ko se povezovanje ukvarja s tem, koliko je en modul odvisen od drugih programskih modulov v celotni aplikaciji. Da bi imeli najbolj kakovostno programsko opremo, morata kohezija in sklopitev doseči oba nasprotna konca svojega spektra. Z drugimi besedami, ohlapna sklopka in močna kohezija zagotavljata najboljšo programsko opremo. Z zasebnimi polji, nejavnimi razredi in zasebnimi metodami se lahko ohlapno poveže, hkrati pa so vsi člani vidni znotraj razreda in imajo paket kot privzeto vidnost visoko kohezijo.