เมื่อใช้องค์ประกอบตามเหตุการณ์ฉันมักจะรู้สึกเจ็บปวดในช่วงการบำรุงรักษา
เนื่องจากโค้ดที่ถูกประมวลผลจะถูกแยกออกไปรอบ ๆ มันอาจเป็นเรื่องยากที่จะคิดว่าส่วนใดของโค้ดที่จะเกี่ยวข้องกับรันไทม์
สิ่งนี้สามารถนำไปสู่ปัญหาการดีบักที่ละเอียดและยากเมื่อมีคนเพิ่มตัวจัดการเหตุการณ์ใหม่บางอย่าง
แก้ไขจากความคิดเห็น: แม้ว่าจะมีแนวปฏิบัติที่ดีเช่นการมีแอพพลิเคชั่น Event Bus และตัวจัดการที่มอบหมายธุรกิจไปยังส่วนอื่น ๆ ของแอพมีช่วงเวลาที่รหัสเริ่มอ่านยากเพราะมีจำนวนมาก ตัวจัดการการลงทะเบียนจากสถานที่ต่าง ๆ (โดยเฉพาะอย่างยิ่งจริงเมื่อมีรถบัส)
จากนั้นไดอะแกรมลำดับเริ่มมองดูซับซ้อนเวลาที่ใช้ในการคิดว่าเกิดอะไรขึ้นเพิ่มขึ้นและเซสชันการดีบักยุ่งเหยิง (เบรกพอยต์บนตัวจัดการตัวจัดการในขณะที่วนรอบตัวจัดการโดยเฉพาะอย่างยิ่งสนุกสนานกับตัวจัดการ async และตัวกรองบางส่วนด้านบน)
//////////////
ตัวอย่าง
ฉันมีบริการที่ดึงข้อมูลบางอย่างบนเซิร์ฟเวอร์ ในไคลเอนต์เรามีองค์ประกอบพื้นฐานที่เรียกใช้บริการนี้โดยใช้การโทรกลับ เพื่อให้จุดส่วนขยายแก่ผู้ใช้ของส่วนประกอบและเพื่อหลีกเลี่ยงการเชื่อมต่อระหว่างส่วนประกอบที่แตกต่างกันเรากำลังยิงเหตุการณ์บางอย่าง: หนึ่งก่อนที่จะส่งแบบสอบถามแบบสอบถามหนึ่งเมื่อคำตอบกลับมาและอีกคนหนึ่งในกรณีของความล้มเหลว เรามีชุดพื้นฐานของตัวจัดการที่ลงทะเบียนล่วงหน้าซึ่งให้พฤติกรรมเริ่มต้นขององค์ประกอบ
ตอนนี้ผู้ใช้ของส่วนประกอบ (และเราเป็นผู้ใช้ของคอมโพเนนต์ด้วย) สามารถเพิ่มตัวจัดการบางอย่างเพื่อทำการเปลี่ยนแปลงบางอย่างเกี่ยวกับพฤติกรรม (ปรับเปลี่ยนแบบสอบถามบันทึกการวิเคราะห์ข้อมูลการกรองข้อมูลการกรองข้อมูลนวดภาพเคลื่อนไหว UI แฟนซีเชนสอบถามหลายลำดับ อะไรก็ตาม) ดังนั้นตัวจัดการบางตัวจะต้องถูกเรียกใช้ก่อน / หลังตัวจัดการบางตัวและพวกมันถูกลงทะเบียนจากจุดเข้าใช้ที่แตกต่างกันมากมายในแอปพลิเคชัน
หลังจากผ่านไปครู่หนึ่งอาจเกิดขึ้นได้ที่ตัวจัดการโหลขึ้นไปมีการลงทะเบียนและการทำงานกับสิ่งนั้นอาจน่าเบื่อและอันตราย
การออกแบบนี้เกิดขึ้นเนื่องจากการใช้การสืบทอดเริ่มเป็นระเบียบสมบูรณ์ ระบบเหตุการณ์ถูกนำมาใช้ในการประพันธ์ชนิดหนึ่งซึ่งคุณยังไม่รู้ว่าจะเป็นอย่างไร
ในตอนท้ายของ
//////////////
ดังนั้นฉันจึงสงสัยว่าคนอื่นกำลังจัดการกับรหัสประเภทนี้อย่างไร ทั้งเมื่อเขียนและอ่านแล้ว
คุณมีวิธีการหรือเครื่องมือที่ช่วยให้คุณเขียนและรักษารหัสดังกล่าวโดยไม่เจ็บปวดมากหรือไม่?