Wat is Inversion of Control?
Inversion of control (IoC) is een programmeertechniek waarbij een algemene codestructuur wordt gebruikt om een aantal unieke en specifieke subroutines te besturen. Dit zet traditionele programmeermethoden, waarbij specifieke code een aantal herbruikbare en algemene subroutines regelt, op zijn kop. Inversion of control wordt meestal gebruikt in situaties waarin de programmeur weet dat hij of zij een specifiek stuk code niet meer dan één keer opnieuw hoeft te gebruiken, waardoor een flexibel ontwerp mogelijk is waarbij de subroutines van een programma kunnen worden in- en uitgeschakeld zonder substantiële wijzigingen in het totale programma .
Traditioneel versus IoC-programmering
In traditionele programmering zal het hoofdgedeelte van de code herhaaldelijk algemene subroutines oproepen die individuele functies uitvoeren. In een programma dat zich bezighoudt met boekhouding, zal een subroutine die is ontworpen om de eindgebruiker in staat te stellen naar een specifiek ordernummer te zoeken, waarschijnlijk meerdere keren worden aangeroepen in verschillende delen van het programma, waardoor de gebruiker dat zeer algemene zoekalgoritme kan uitvoeren vanaf een aantal verschillende gebieden van het programma. Het opnieuw gebruiken van de code vereenvoudigt het programmeerproces, maar creëert complexiteit als de programmeur het zoekalgoritme voor één sectie van het programma wil aanpassen zonder de andere secties waarin de code wordt gebruikt te beïnvloeden.
Met hetzelfde voorbeeld onder een inversie van besturingsscenario zou de enkele zoeksubroutine niet meerdere keren worden aangeroepen over een aantal delen van het programma. In plaats daarvan zou elke sectie van het programma zijn eigen volledig onafhankelijke zoeksubroutine bevatten. Dit verhoogt de hoeveelheid tijd die nodig is om het programma in eerste instantie te coderen, maar vereenvoudigt eventuele specifieke aanpassingen die later moeten worden aangebracht in afzonderlijke subroutines in het ontwerpproces. Als u een subroutine in een specifiek gebied wijzigt, blijft de rest van het programma volledig onaangetast.
Voordelen van IoC
Een groot voordeel van deze techniek is dat het programmaontwerp veel eenvoudiger wordt wanneer u in grootschalige teams werkt. Aangezien communicatie tussen teamleden noodzakelijkerwijs steeds moeilijker zal blijken naarmate het aantal werknemers toeneemt, stelt inversie van controle elk team in staat om zijn eigen individuele routines te programmeren, waardoor ze onafhankelijk van elkaar kunnen functioneren. Het vereenvoudigt ook de impact van bugs in het systeem, omdat aanhoudende fouten in de subroutines van elk team alleen hun specifieke delen van het programma zullen beïnvloeden. Daarom moet de rest van het programma volledig functioneel blijven wanneer problemen in een deel van het systeem worden ontdekt.
Nadelen van IoC
Hoewel inversie van besturing het programmaontwerp kan vereenvoudigen, is voorkennis vereist van het ontwerpen van objecten. Hoewel elke routine afzonderlijk kan worden geprogrammeerd, moet een IoC-maker weten hoe hij elk item moet programmeren voor het geval er wijzigingen moeten worden aangebracht, dus het is niet altijd gemakkelijk voor een beginnende programmeur om IoC te gebruiken. Omdat elke routine onafhankelijk functioneert, worden ze allemaal zichtbaar gemaakt voor de buitenwereld, die door sommige bedrijven kan worden afgekeurd.