Podczas korzystania ze składnika opartego na zdarzeniu często odczuwam pewien ból w fazie podtrzymywania.
Ponieważ cały wykonywany kod jest podzielony, ustalenie, jaka część kodu będzie zaangażowana w czasie wykonywania, może być dość trudne.
Może to prowadzić do subtelnych i trudnych do debugowania problemów, gdy ktoś doda nowe moduły obsługi zdarzeń.
Edycja z komentarzy: nawet przy niektórych dobrych praktykach na pokładzie, takich jak szyna zdarzeń obsługująca całą aplikację i programy obsługi delegujące biznes do innej części aplikacji, jest moment, w którym kod staje się trudny do odczytania, ponieważ jest dużo zarejestrowani treserzy z wielu różnych miejsc (szczególnie prawdziwe, gdy jest autobus).
Następnie schemat sekwencji zaczyna wyglądać na skomplikowany, czas spędzony na ustaleniu, co się dzieje, wzrasta, a sesja debugowania staje się niechlujna (punkt przerwania w menedżerze procedur obsługi podczas iteracji w procedurach obsługi, szczególnie radosny z obsługi programu asynchronicznego i niektórych filtrów na nim).
//////////////
Przykład
Mam usługę, która pobiera niektóre dane z serwera. Na kliencie mamy podstawowy komponent, który wywołuje tę usługę za pomocą wywołania zwrotnego. Aby zapewnić punkt rozszerzenia użytkownikom komponentu i uniknąć sprzężenia między różnymi komponentami, uruchamiamy niektóre zdarzenia: jedno przed wysłaniem zapytania, jedno, gdy odpowiedź wraca, a drugie w przypadku niepowodzenia. Mamy podstawowy zestaw programów obsługi, które są wstępnie zarejestrowane i zapewniają domyślne zachowanie komponentu.
Teraz użytkownicy komponentu (i my też jesteśmy jego komponentem) mogą dodawać moduły obsługi, aby wprowadzić pewne zmiany w zachowaniu (modyfikować zapytanie, logi, analizę danych, filtrowanie danych, masowanie danych, fantazyjną animację interfejsu użytkownika, łańcuch wielu sekwencyjnych zapytań , cokolwiek). Dlatego niektóre procedury obsługi muszą zostać wykonane przed / po niektórych innych i są zarejestrowane z wielu różnych punktów wejścia w aplikacji.
Po chwili może się zdarzyć, że zarejestrowanych jest kilkanaście osób, a praca z tym może być żmudna i niebezpieczna.
Ten projekt powstał, ponieważ używanie dziedziczenia zaczynało być kompletnym bałaganem. System zdarzeń jest używany w pewnym rodzaju kompozycji, w której nie wiesz jeszcze, jakie będą twoje kompozyty.
Koniec przykładu
//////////////
Zastanawiam się więc, jak inni ludzie radzą sobie z tego rodzaju kodem. Zarówno podczas pisania, jak i czytania.
Czy masz jakieś metody lub narzędzia, które pozwalają pisać i utrzymywać taki kod bez większego bólu?