可能重複:
How should the Form.Load event be used compared to its constructor method?C#良好作風
你好,
我的問題是關於C#良好的編程習慣。如果我使用各種形式創建應用程序,我會在Load方法中初始化與DB的連接,或者它應該在表單的基本構造器內部?另外,填充表單基本文本框和組合框的其他代碼可以在Load方法內部,或者爲此目的使用構造函數總是更好?
由於提前,
科內爾
可能重複:
How should the Form.Load event be used compared to its constructor method?C#良好作風
你好,
我的問題是關於C#良好的編程習慣。如果我使用各種形式創建應用程序,我會在Load方法中初始化與DB的連接,或者它應該在表單的基本構造器內部?另外,填充表單基本文本框和組合框的其他代碼可以在Load方法內部,或者爲此目的使用構造函數總是更好?
由於提前,
科內爾
每當你想改變這種狀況屬於形成控制的狀態,我建議您在窗體的Load事件這樣做。
這樣做在窗體的構造函數中容易出錯。你有沒有想過如果你嘗試在構造函數中做,但在InitializeComponents()
方法調用之前會發生什麼?
關於ConnectionString,你可以在兩者中做到這一點,因爲這與Form沒有直接關係。
你也可以看看一些開源項目的代碼,看看他們是如何做到這一點沒有關於使用Form :)
我投在構造連接,並形成Load方法填寫!
我覺得還有沒有很大的區別......它取決於應用程序的實現!例如,您可以從基本表單繼承所有表單,並在其中放置連接字符串檢索邏輯。
如果你想深入一點,我建議你看看依賴注入(搜索windsor castle,spring.net,ninject ...)來在表單類中注入數據庫訪問類!
網站上的音符相關的ConnectionString
或一些其他的東西..什麼也不做,直接在構造函數或表單加載中。
創建一個init方法或者你從適當的方法(構造函數,load)中調用的東西。這使得重構和單元測試更容易。而且代碼通常更易於閱讀。
謝謝,我同意可讀性問題,但如果您的代碼增長過多,調用會影響性能。現在我正在按照你的建議進行,因爲我開始這樣做,方法調用。 – Kornel 2011-05-21 21:11:54
肯定會以Load
的形式做更好的事情,因爲這種方式只會在需要時纔會發生。但也同意使用從表單加載事件處理程序調用的init方法的建議。
謝謝,所以我會恢復爲靜態信息可以去構造函數和dinamically處理的信息將在一個更好的地方在Load事件。 – Kornel 2011-05-21 21:05:26