Saat menggunakan komponen berbasis peristiwa saya sering merasa sakit pada fase pemeliharaan.
Karena semua kode yang dieksekusi terpecah-pecah, akan sangat sulit untuk mengetahui bagian kode apa yang akan digunakan saat runtime.
Ini dapat menyebabkan masalah halus dan sulit untuk debug ketika seseorang menambahkan beberapa penangan acara baru.
Edit dari komentar: Bahkan dengan beberapa praktik yang baik di papan tulis, seperti memiliki aplikasi bus acara luas dan penangan mendelegasikan bisnis ke bagian lain dari aplikasi, ada saat ketika kode mulai menjadi sulit dibaca karena ada banyak penangan terdaftar dari berbagai tempat (terutama benar ketika ada bus).
Kemudian diagram urutan mulai terlihat rumit, waktu yang dihabiskan untuk mencari tahu apa yang terjadi meningkat dan sesi debug menjadi berantakan (breakpoint pada manajer penangan saat iterasi pada penangan, terutama yang menyenangkan dengan penangan async dan beberapa pemfilteran di atasnya).
//////////////
Contoh
Saya memiliki layanan yang mengambil beberapa data di server. Pada klien kami memiliki komponen dasar yang memanggil layanan ini menggunakan panggilan balik. Untuk memberikan titik ekstensi kepada pengguna komponen dan untuk menghindari penggabungan antara berbagai komponen, kami meluncurkan beberapa peristiwa: satu sebelum permintaan dikirim, satu ketika jawabannya kembali dan satu lagi jika terjadi kegagalan. Kami memiliki satu set penangan dasar yang sudah didaftarkan sebelumnya yang memberikan perilaku standar komponen.
Sekarang pengguna komponen (dan kami juga pengguna komponen) dapat menambahkan beberapa penangan untuk melakukan beberapa perubahan pada perilaku (memodifikasi kueri, log, analisis data, pemfilteran data, pemijatan data, animasi mewah UI, rangkaian kueri berurutan berantai) , Masa bodo). Jadi beberapa penangan harus dieksekusi sebelum / setelah beberapa orang lain dan mereka terdaftar dari banyak titik masuk yang berbeda dalam aplikasi.
Setelah beberapa saat, dapat terjadi bahwa selusin atau lebih penangan terdaftar, dan bekerja dengan itu bisa membosankan dan berbahaya.
Desain ini muncul karena menggunakan warisan mulai berantakan total. Sistem acara digunakan pada jenis komposisi di mana Anda belum tahu apa yang akan menjadi komposit Anda.
Akhir contoh
//////////////
Jadi saya bertanya-tanya bagaimana orang lain menangani kode semacam ini. Baik saat menulis maupun membacanya.
Apakah Anda memiliki metode atau alat yang memungkinkan Anda menulis dan memelihara kode seperti itu tanpa banyak kesulitan?