Koppeling versus samenhang
Koppeling en cohesie zijn twee concepten die worden gevonden in Java (en alle andere objectgeoriënteerde talen). Koppeling meet hoeveel elk van de programmamodules afhankelijk is van de andere programmamodules. Cohesie meet hoe sterk elk van de functies gerelateerd is binnen een module. Eigenlijk heeft elke object-georiënteerde taal (inclusief Java) de twee hoofddoelen van het verhogen van de samenhang en het verminderen van de koppeling op hetzelfde moment, om zo efficiënt mogelijke programma's te ontwikkelen. Deze twee software engineering statistieken zijn ontwikkeld door Larry Constantine om de kosten van het aanpassen en onderhouden van software te verlagen.
Wat is cohesie?
Cohesie meet hoe sterk elk van de functies gerelateerd is binnen een programmamodule. Goed gestructureerde lessen leiden tot zeer samenhangende programma's. Als een bepaalde klasse een reeks sterk verwante functies uitvoert, wordt gezegd dat die klasse samenhangend is. Aan de andere kant, als een klas een heleboel totaal niet-gerelateerde functionaliteiten uitvoert, betekent dit dat de klas helemaal niet coherent is. Het is belangrijk om te begrijpen dat het ontbreken van samenhang niet betekent dat de algemene toepassing niet over de vereiste functionaliteit beschikt. Het is gewoon dat zonder cohesie, het erg moeilijk zal zijn om de functionaliteit te manipuleren omdat ze op veel verkeerde plaatsen verspreid zullen zijn, omdat de complexiteit van de applicatie in de loop van de tijd toeneemt. Het onderhouden, wijzigen en uitbreiden van het gedrag verspreid over de code is erg vervelend, zelfs voor de meest ervaren programmeurs.
Wat is koppelen?
Koppeling meet hoeveel elk van de programmamodules afhankelijk is van de andere programmamodules. Interacties tussen twee objecten doen zich voor omdat er koppeling is. Losjes gekoppelde programma's zijn hoog in flexibiliteit en uitbreidbaarheid. Sterke koppeling is nooit goed, omdat een object sterk afhankelijk kan zijn van een ander object. Dit is een nachtmerrie wanneer de code wordt gewijzigd, omdat een hoge koppeling betekent dat de programmeurs op verschillende codecodes moeten werken voor zelfs een enkele gedragsaanpassing. Sterke koppeling leidt altijd tot programma's met lage flexibiliteit en minder schaalbaarheid / uitbreidbaarheid. In programmeertalen zoals Java is het volledig vermijden van koppelen echter onmogelijk. Maar het wordt aanbevolen dat de programmeurs hun uiterste best doen om de koppeling zo veel mogelijk te verminderen. Het is ook mogelijk om een koppeling te hebben om objecten te laten samenwerken met elkaar zonder de schaalbaarheid en flexibiliteit te belemmeren.
Wat is het verschil tussen koppeling en cohesie?
Hoewel koppeling en cohesie te maken hebben met de kwaliteit van een module in software engineering, zijn het totaal verschillende concepten. Cohesion praat over de mate waarin de functionaliteit binnen de module aan elkaar gerelateerd is, terwijl koppeling gaat over hoeveel een module afhankelijk is van de andere programmamodules binnen de hele applicatie. Om software van de beste kwaliteit te hebben, moeten cohesie en koppeling de twee tegenovergestelde kanten van hun spectrum bereiken. Met andere woorden, losse koppeling en sterke cohesie biedt de beste software. Privévelden, niet-openbare klassen en privémethoden bieden losse koppelingen, terwijl alle leden zichtbaar zijn binnen de klas en het pakket als de standaard zichtbaarheid zorgt voor een hoge cohesie.