ฉันพบว่าเมื่อใดก็ตามที่ฉันทำงานกับรหัส GUI โค้ดจะมีแนวโน้มที่จะขยายตัวเร็วขึ้นจากนั้นก็เป็นรหัสประเภทอื่น มันก็ดูเหมือนยากที่จะ refactor ในขณะที่รหัสอื่น ๆ ที่ฉันสามารถสร้างใหม่ได้อย่างง่ายดาย - ฉันพบว่าฉันสามารถแยกคลาสที่ใหญ่กว่าออกเป็นส่วนเล็ก ๆ ของฟังก์ชั่น - กับกรอบงาน GUI ส่วนใหญ่ฉันมักจะผูกพันกับเฟรมเวิร์กที่ต้องใช้เครื่องมือ ใช้สิ่งอื่น ๆ อีกมากมายได้โดยตรงในวิดเจ็ต / การควบคุม / อะไรก็ตาม บางครั้งนี่อาจเป็นเพราะต้อง (ก) สืบทอดบางส่วนของวิดเจ็ต / การควบคุม / บางสิ่งบางอย่างหรือ (b) ต้องเข้าถึงวิธีการป้องกัน
ยกตัวอย่างเช่นฉันต้องตอบสนองต่ออินพุตที่หลากหลายผ่านสัญญาณ / เหตุการณ์ / อะไรก็ตามจากเฟรมเวิร์กเพื่อใช้โหมดทั้งหมดของการโต้ตอบกับผู้ใช้ ฉันอาจต้องการเครื่องมือ GUI / การควบคุมเดียวเพื่อจัดการอินพุต / เอาต์พุตหลากหลายที่อาจรวมถึง:
- คลิกขวา / เมนูบริบท
- ตอบสนองต่อการเลือกจากเมนูบริบท - ซึ่งอาจเป็นจำนวนมาก
- วิธีพิเศษในการวาด GUI
- ตอบสนองต่อคีย์บอร์ด
- ปุ่มช่องทำเครื่องหมาย
- ฯลฯ
... ในขณะที่จัดการคลาสภายใต้ GUI ที่แสดงถึงตรรกะทางธุรกิจ
GUI ตรงไปข้างหน้าอย่างง่ายสามารถทำให้โค้ดของมันเติบโตอย่างรวดเร็วแม้เมื่อแยกตรรกะทางธุรกิจและการใช้ MVC ฉันพบว่าโค้ด GUI เป็นแม่เหล็กที่ยิ่งใหญ่สำหรับการเปลี่ยนแปลง
มีวิธีจัดการรหัส GUI อย่างมีสติและหลีกเลี่ยงการปล่อยให้มันกลายเป็นหน้าต่างแตกหรือไม่? หรือมวลของตัวจัดการเหตุการณ์แบบสุ่ม / วิธีการแทนที่จริง ๆ แล้วดีที่สุดที่เราสามารถทำได้สำหรับโค้ด GUI?