簡體   English   中英

在C#和Winforms中正確的類實例化

[英]Proper class instantiation in C# and Winforms

在過去兩年中擔任C#/ WPF / MVVM開發人員后,我最近在一家新公司接管了VB / Winform項目。

我已經成功地將項目轉換為C#。 我一直在進行大量研究,試圖找出適合該項目的最佳方法,但我正在嘗試找出確切的重構和重新配置量。

我的問題是:以前的開發人員創建了兩個巨大的靜態類。 有30多種表格可用於各種任務。 每種形式都是通過在屏幕的“主菜單”類型上單擊按鈕驅動的事件來調用的。 程序初始化時,將調用這些巨型類之一的函數,以實例化每種形式。 還有大量的靜態和常量。

我將常量分解出來,並為它們創建了一個特定的類。 我將大型類划分為較小的,更易於管理的(且特定於職責的)類,但是我有一個非常大的初始化函數,可以實例化所有這些形式。

因此,我的問題(最后)是:我在資源噩夢之上寫的是嗎? 或者,這是我應該保留的某種正常的VB / Winform設計模式嗎? 我是否應該重寫一下,以便在單擊調用該表單的按鈕時實例化每個表單/類,以便在關閉時可以將其丟棄?

謝謝您給我的任何指示。 如果我可以提供更多信息以使其更加具體,請發表評論,我將進行編輯。

我上面寫的是一場資源噩夢嗎?

或者,這是我應該保留的某種正常的VB / Winform設計模式嗎?

絕對不。 該系統的設計在VB和C#中幾乎相同。 除了一些非常小的例外,兩種語言之間的區別只是語法。

我是否應該重寫一下,以便在單擊調用該表單的按鈕時實例化每個表單/類,以便在關閉時可以將其丟棄?

理論上可以。 表單應該像使用C#編寫時一樣運行。 當然,如果原始開發人員非常喜歡全局狀態,那么在表單的一個外觀和下一個外觀之間可能會潛伏着各種各樣的狀態。

VB的一些功能可能會使較弱的開發人員誤入歧途。 Module的存在(本質上是一個靜態類,但有時更方便)可以誘使某些人添加比他們應有的更多的全局狀態。 同樣在VB中,它會根據需要自動創建每個表單的單個全局實例,並與該類具有相同的名稱。 這可能會使開發人員將表單混淆為類和對象-導致表單的單個實例,而不是根據需要構造和處置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM