Hva er invertering av kontroll?
Inversion of control (IoC) er en programmeringsteknikk der en generell kodestruktur brukes til å styre en rekke unike og spesifikke subroutiner. Dette snur tradisjonelle programmeringsmetoder, der spesifikk kode styrer en rekke gjenbrukbare og generelle subroutiner, opp ned. Invertering av kontroll brukes vanligvis i situasjoner der programmereren vet at han eller hun ikke vil måtte gjenbruke et spesifikt stykke kode mer enn en gang, slik at en fleksibel design der et programs underprogrammer kan slås inn og ut uten vesentlige endringer i det overordnede programmet .
Tradisjonell versus IoC-programmering
I tradisjonell programmering vil hoveddelen av koden gjentatte ganger etterlyse generelle underprogrammer som utfører individuelle funksjoner. For eksempel, i et program som tar for seg regnskap, vil en subroutine designet for å tillate sluttbrukeren å søke etter et spesifikt ordrenummer antagelig kalles flere ganger i forskjellige deler av programmet, slik at brukeren kan utføre den meget generelle søkealgoritmen fra en rekke forskjellige områder av programmet. Gjenbruk av koden forenkler programmeringsprosessen, men skaper kompleksiteter hvis programmereren ønsker å finjustere søkealgoritmen for en del av programmet uten å påvirke de andre seksjonene koden brukes i.
Ved å bruke det samme eksemplet under et inversjon av kontrollscenario, vil ikke enkelt søkesubroutine bli kalt flere ganger på tvers av et antall områder i programmet. I stedet vil hver del av programmet inneholde sin egen fullstendig selvforsynt søkende subroutine. Dette øker tiden som trengs for å begynne å kode programmet, men forenkler eventuelle spesifikke justeringer som måtte være nødvendige senere til individuelle underrutiner i designprosessen. Endring av en subroutine i ett spesifikt område vil gjøre resten av programmet helt upåvirket.
Fordeler med IoC
En stor fordel med denne teknikken er at den gjør programdesign langt enklere når du jobber i store skalaer. Ettersom kommunikasjon mellom teammedlemmer nødvendigvis vil vise seg å bli mer og mer vanskelig etter hvert som antall arbeidere øker, lar inversjon av kontroll hvert team programmere sine egne individuelle rutiner, slik at de kan fungere uavhengig av hverandre. Det forenkler også virkningen av feil i systemet, da eventuelle langvarige feil i hvert lags underprogrammer bare vil påvirke deres spesifikke deler av programmet. På grunn av dette, når problemer oppdages i en del av systemet, bør resten av programmet forbli fullt funksjonelt.
Ulemper ved IoC
Selv om inversjon av kontroll kan forenkle programdesign, krever det forkunnskaper om hvordan man designer objekter. Mens hver rutine kan programmeres individuelt, må en IoC-skaper vite hvordan man programmerer hvert element i tilfelle det må gjøres endringer, så det er ikke alltid like lett for en begynnende programmerer å ansette IoC. Fordi hver rutine fungerer uavhengig, blir de alle synliggjort for omverdenen, noe som kan være rynket av noen selskaper.