Cuplaj vs Coeziune
Cuplajul și coeziunea sunt două concepte găsite în Java (și toate celelalte limbi orientate pe obiecte). Cuplarea măsoară modul în care fiecare dintre modulele de program depind de celelalte module de program. Coeziunea măsoară modul în care fiecare dintre funcții este asociat într-un modul. De fapt, orice limbaj orientat pe obiecte (inclusiv Java) are cele două obiective principale de creștere a coeziunii și de reducere a cuplării în același timp, în scopul dezvoltării celor mai eficiente programe. Aceste două valori de inginerie software au fost dezvoltate de Larry Constantine pentru a reduce costurile de modificare și menținere a software-ului.
Ce este coeziunea?
Coeziunea măsoară cât de puternică este fiecare funcție în cadrul unui modul de program. Clasele bine structurate duc la programe foarte coerente. Dacă o anumită clasă efectuează un set de funcții foarte înrudite, acea clasă se spune a fi coerentă. Pe de altă parte, dacă o clasă realizează o mulțime de funcționalități complet independente, aceasta înseamnă că clasa nu este coerentă deloc. Este important să înțelegem că lipsa coerenței nu înseamnă că aplicația generală nu are funcționalitatea necesară. Doar că fără coeziune, va fi foarte dificil să se gestioneze funcționalitatea, deoarece acestea vor fi împrăștiate în multe locuri greșite pe măsură ce complexitatea aplicației crește în timp. Menținerea, modificarea și extinderea comportamentelor împrăștiate peste tot în cod este foarte obositoare chiar și pentru cei mai mulți programatori de experiență.
Ce este cuplajul?
Cuplarea măsoară modul în care fiecare dintre modulele de program depind de celelalte module de program. Interacțiunile dintre două obiecte apar deoarece există o cuplare. Programele cu cuplaj liber sunt bogate în flexibilitate și extensibilitate. Cuplarea puternică nu este niciodată bună deoarece un obiect poate fi foarte dependent de un alt obiect. Acesta este un coșmar atunci când codul este modificat, deoarece cuplarea înaltă înseamnă că programatorii trebuie să lucreze pe mai multe locuri de cod pentru chiar și o singură modificare comportamentală. Cuplarea puternică duce întotdeauna la programe cu flexibilitate scăzută și scalabilitate / extensibilitate redusă. Cu toate acestea, în limbi de programare cum ar fi Java, evitarea complet de cuplare este imposibilă. Dar se recomandă ca programatorii să depună toate eforturile pentru a reduce cât mai mult cuplajul. Este, de asemenea, posibil să existe un cuplu pentru a ajuta obiectele să interacționeze unul cu celălalt, fără a împiedica scalabilitatea și flexibilitatea acestuia.
Care este diferența dintre cuplaj și coeziune?
Chiar dacă cuplajul și coeziunea tratează calitatea unui modul în ingineria software, ele sunt concepte complet diferite. Coeziunea vorbește despre cât de multă funcționalitate este legată între ele în cadrul modulului, în timp ce cuplarea se referă la modul în care un modul este dependent de celelalte module de program din întreaga aplicație. Pentru a avea software de cea mai bună calitate, coeziunea și cuplarea ar trebui să ajungă la cele două capete opuse ale spectrului lor. Cu alte cuvinte, cuplajul liber și coeziunea puternică oferă cel mai bun software. Câmpurile private, clasele non-publice și metodele private oferă o cuplare liberă, făcând ca toți membrii să fie vizibili în cadrul clasei și având pachetul ca vizibilitate implicită, asigurând coeziune ridicată.