Під час використання компонентів, що базуються на подіях, я часто відчуваю деякий біль на етапі обслуговування.
Оскільки виконаний код весь розділений навколо, може бути досить важко зрозуміти, яка буде вся частина коду, яка буде задіяна під час виконання.
Це може призвести до тонких і важких проблем налагодження, коли хтось додає нові обробники подій.
Редагувати з коментарів: Навіть якщо на практиці існують деякі добрі практики, як, наприклад, шина подій із широким додатком та обробники, які передають бізнес в іншу частину програми, є момент, коли код починає важко читати, тому що існує багато зареєстровані обробники з багатьох місць (особливо це стосується автобуса).
Потім діаграма послідовностей починає переглядати складні, витрачається час на з'ясування того, що відбувається, і сеанс налагодження стає безладним (точка розриву у менеджера обробників під час ітерації на обробниках, особливо радісно з асинхронним обробником та деяка фільтрація над ним).
//////////////
Приклад
У мене є сервіс, який витягує деякі дані на сервер. У клієнта у нас є базовий компонент, який викликає цю послугу за допомогою зворотного дзвінка. Щоб надати точку розширення користувачам компонента та уникнути зв’язку між різними компонентами, ми запускаємо деякі події: один перед надсиланням запиту, один, коли відповідь повертається, а інший у разі відмови. У нас є основний набір обробників, які попередньо зареєстровані, які забезпечують поведінку компонента за замовчуванням.
Тепер користувачі компонента (і ми також є користувачем компонента) можуть додати деякі обробники, щоб здійснити певну зміну поведінки (змінити запит, журнали, аналіз даних, фільтрацію даних, масаж даних, фантазійну анімацію інтерфейсу, ланцюг кількох послідовних запитів , що б там не було). Тому деякі обробники повинні бути виконані до / після деяких інших, і вони зареєстровані з безлічі різних точок входу в програму.
Через деякий час може статися, що зареєстровано десяток і більше обробників, і робота з цим може бути виснажливою і небезпечною.
Цей дизайн з'явився тому, що використання спадщини починало бути повним безладом. Система заходів використовується у вигляді композиції, де ви ще не знаєте, якими будуть ваші композити.
Кінець прикладу
//////////////
Тож мені цікаво, як інші люди справляються з таким кодом. Як при його написанні, так і при читанні.
Чи є у вас якісь методи чи інструменти, які дозволять вам писати та підтримувати такий код без особливого болю?