現象
WinForms/WPF 視窗類別往往包含大量 UI 控制項、事件處理、業務邏輯,動輒數千行。
分析
- 框架限制:設計器生成代碼、事件綁定、生命週期方法強制集中於視窗類別。
- 單一職責原則(SRP):視窗類別應僅負責 UI 佈局與互動,業務邏輯、資料存取、網路通訊應抽離至獨立 Service/ViewModel 類別。
最佳實踐
- 採用 MVVM / MVP / MVC 模式,將業務邏輯移入 ViewModel/Presenter/Controller。
- 視窗類別僅保留:
InitializeComponent()、綁定命令、顯示對話框等 UI 專屬代碼。
- 使用依賴注入(DI)注入服務,降低耦合。
結論
視窗類別龐大不一定違反 SRP(若僅包含 UI 代碼),但若混雜業務邏輯則違反。關鍵在於「恰到好處」的職責劃分,而非單純行數大小。