Odwrócenie kontroli (IoC) to technika programowania, w której do zarządzania szeregiem unikalnych i specyficznych podprogramów wykorzystywana jest ogólna struktura kodu. Odwraca to do góry nogami tradycyjne metody programowania, w których określony kod reguluje szereg podprogramów wielokrotnego użytku i ogólnych. Odwrócenie kontroli jest zwykle używane w sytuacjach, w których programista wie, że nie będzie musiał ponownie używać określonego fragmentu kodu więcej niż raz, co pozwala na elastyczny projekt, w którym podprogramy programu mogą być włączane i wyłączane bez istotnych zmian w całym programie .
Tradycyjne programowanie kontra IoC
W tradycyjnym programowaniu główna część kodu będzie wielokrotnie odwoływać się do ogólnych podprogramów, które wykonują poszczególne funkcje. Na przykład w programie obsługującym księgowość podprogram umożliwiający użytkownikowi końcowemu wyszukanie określonego numeru zamówienia będzie prawdopodobnie wielokrotnie wywoływany w różnych sekcjach programu, umożliwiając użytkownikowi wykonanie tego bardzo ogólnego algorytmu wyszukiwania z szereg różnych obszarów programu. Ponowne użycie kodu upraszcza proces programowania, ale tworzy złożoność, jeśli programista chce dostosować algorytm wyszukiwania dla jednej sekcji programu bez wpływu na inne sekcje, w których używany jest kod.
Korzystając z tego samego przykładu w scenariuszu odwrócenia sterowania, pojedynczy podprogram wyszukiwania nie byłby wywoływany wielokrotnie w wielu obszarach programu. Zamiast tego każda sekcja programu zawierałaby swój własny, całkowicie niezależny podprogram wyszukiwania. Zwiększa to ilość czasu potrzebnego na wstępne zakodowanie programu, ale upraszcza wszelkie konkretne poprawki, które mogą być konieczne później do poszczególnych podprogramów w procesie projektowania. Zmiana jednego podprogramu w jednym określonym obszarze nie wpłynie na pozostałą część programu.
Zalety IoC
Jedną z głównych zalet tej techniki jest to, że znacznie ułatwia projektowanie programów podczas pracy w zespołach na dużą skalę. Ponieważ komunikacja między członkami zespołu będzie z konieczności stawała się coraz trudniejsza wraz ze wzrostem liczby pracowników, odwrócenie kontroli pozwala każdemu zespołowi zaprogramować własne, indywidualne procedury, umożliwiając im funkcjonowanie niezależnie od siebie. Upraszcza również wpływ błędów w systemie, ponieważ wszelkie utrzymujące się błędy w podprogramach każdego zespołu będą miały wpływ tylko na ich określone sekcje programu. Z tego powodu, w przypadku wykrycia problemów w jednej części systemu, reszta programu powinna pozostać w pełni funkcjonalna.
Wady IoC
Chociaż odwrócenie kontroli może uprościć projektowanie programu, wymaga wcześniejszej wiedzy na temat projektowania obiektów. Chociaż każdą procedurę można zaprogramować indywidualnie, twórca IoC musi wiedzieć, jak zaprogramować każdy element na wypadek konieczności wprowadzenia zmian, więc początkujący programista nie zawsze może łatwo zastosować IoC. Ponadto, ponieważ każda procedura działa niezależnie, wszystkie są widoczne dla świata zewnętrznego, na co niektóre firmy mogą patrzeć z dezaprobatą.