Skip to main content

Vad är inversion av kontrollen?

Inversion av kontroll (IOC) är en programmeringsteknik där en allmän kodstruktur används för att styra ett antal unika och specifika subroutiner.Detta förvandlar traditionella programmeringsmetoder, där specifik kod styr ett antal återanvändbara och allmänna subroutiner, upp och ner.Inversion av kontroll används vanligtvis i situationer där programmeraren vet att han eller hon inte kommer att behöva återanvända en specifik kodstycke mer än en gång, vilket tillåter en flexibel design där en programundersökning kan bytas in och ut utan väsentliga förändringar av det övergripande programmet.

Traditionell kontra IOC -programmering

I traditionell programmering kommer kodens huvuddel upprepade gånger att kräva allmänna subroutiner som utför enskilda funktioner.Till exempel, i ett program som handlar om redovisning, kommer en subroutine utformad för att låta slutanvändaren söka efter ett specifikt ordernummer att kallas flera gånger i olika avsnitt i programmet, vilket gör att användaren kan utföra den mycket allmänna sökalgoritmen frånEtt antal olika områden i programmet.Återanvändning av koden förenklar programmeringsprocessen, men skapar komplexitet om programmeraren vill finjustera sökalgoritmen för en del av programmet utan att påverka de andra avsnitten där koden används.

Använda samma exempel under en inversion av kontrollscenario, Single Search Subroutine skulle inte kallas flera gånger över ett antal områden i programmet.Istället skulle varje avsnitt i programmet innehålla sin egen helt fristående sökande subroutine.Detta ökar den tid som krävs för att initialt koda programmet, men förenklar alla specifika tweaks som kan behöva göras senare till enskilda subroutiner i designprocessen.Att ändra en subroutine i ett specifikt område kommer att lämna resten av programmet helt opåverkat.

Fördelar med IOC

En viktig fördel för denna teknik är att det gör programdesign mycket enklare när man arbetar i storskaliga team.Eftersom kommunikationen mellan teammedlemmarna nödvändigtvis kommer att visa sig mer och svårare när antalet arbetare ökar, gör det möjligt för inversion av kontroll att varje team kan programmera sina egna individuella rutiner, vilket gör att de kan fungera oberoende av varandra.Det förenklar också effekterna av buggar i systemet, eftersom alla kvarvarande fel i varje team subroutines endast kommer att påverka deras specifika avsnitt av programmet.På grund av detta, när problem upptäcks i en del av systemet, bör resten av programmet förbli fullt funktionellt.

Nackdelar med IOC

Medan inversion av kontroll kan förenkla programdesign kräver det förkunskaper om hur man utformarföremål.Även om varje rutin kan programmeras individuellt, måste en IOC -skapare veta hur man programmerar varje objekt om ändringar måste göras, så det är inte alltid lätt för en början programmerare att anställa IOC.Eftersom varje rutin fungerar oberoende syns alla synliga för omvärlden, som kan rynkas på av vissa företag.