Co to jest odwrócenie kontroli?
Inwersja sterowania (IoC) to technika programowania, w której ogólna struktura kodu jest używana do zarządzania wieloma unikalnymi i specyficznymi podprogramami. To odwraca tradycyjne metody programowania, w których konkretny kod reguluje wiele procedur wielokrotnego użytku i ogólnych, do góry nogami. Odwrócenie kontroli jest zwykle stosowane w sytuacjach, gdy programiści wiedzą, że nie będą musieli ponownie używać określonego fragmentu kodu więcej niż raz, co pozwala na elastyczny projekt, w którym podprogramy programu można włączać i wyłączać bez istotnych zmian w całym programie .
Programowanie tradycyjne a IoC
W tradycyjnym programowaniu główna część kodu będzie wielokrotnie wywoływać ogólne podprogramy, które wykonują poszczególne funkcje. Na przykład w programie zajmującym się rachunkowością podprogram zaprojektowany w celu umożliwienia użytkownikowi końcowemu wyszukiwania określonego numeru zamówienia będzie prawdopodobnie wywoływany wielokrotnie w różnych sekcjach programu, umożliwiając użytkownikowi wykonanie tego bardzo ogólnego algorytmu wyszukiwania z wiele różnych obszarów programu. Ponowne użycie kodu upraszcza proces programowania, ale powoduje złożoność, jeśli programista chce ulepszyć algorytm wyszukiwania dla jednej sekcji programu bez wpływu na inne sekcje, w których kod jest używany.
Korzystając z tego samego przykładu w scenariuszu inwersji sterowania, pojedynczy podprogram wyszukiwania nie będzie wywoływany wiele razy w wielu obszarach programu. Zamiast tego każda sekcja programu zawierałaby swój całkowicie samodzielny podprogram wyszukiwania. Zwiększa to czas potrzebny do początkowego kodowania programu, ale upraszcza wszelkie specyficzne poprawki, które mogą być później konieczne dla poszczególnych podprogramów w procesie projektowania. Zmiana jednego podprogramu w jednym konkretnym obszarze pozostawi pozostałą część programu całkowicie nienaruszoną.
Zalety IoC
Jedną z głównych zalet tej techniki jest to, że znacznie ułatwia projektowanie programów podczas pracy w dużych zespołach. Ponieważ komunikacja między członkami zespołu z konieczności okaże 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 niezależne funkcjonowanie. Upraszcza to 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, gdy problemy zostaną wykryte w jednej części systemu, reszta programu powinna pozostać w pełni funkcjonalna.
Wady IoC
Odwrócenie kontroli może uprościć projektowanie programu, wymaga jednak wcześniejszej wiedzy na temat projektowania obiektów. Chociaż każdą procedurę można zaprogramować osobno, 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 rutyna działa niezależnie, wszystkie są widoczne dla świata zewnętrznego, co może być odrzucone przez niektóre firmy.