2012-06-13 62 views
0

我想問問pro開發人員他們是如何管理一個大窗口窗體類的。將關鍵字partial與不同文件分開是不是一個好主意?那是,我是到目前爲止在做的事情,但它外幣unnecessry Designer文件,當你在VS上他們雙擊,一個空白的winform會彈出:管理一個很大的WinForm代碼

enter image description here

所以我做什麼,基本上是組事件和代碼邏輯爲每個相關的控件組在一個文件中。

+0

你是什麼意思的「大」? –

+0

@Bryan一個窗口窗口,執行10000行代碼......我認爲它很大! –

+0

我同意這很大。請參閱下面的ivowiblo的答案......重構的時間。 –

回答

2

我的回答是「我不知道」。如果你在一個單獨的類(在這種情況下是一個表單)中需要很多代碼,這通常意味着你的類正在做很多事情,你需要減少耦合。實現此目的的一個好方法是使用一種MVC或MVP模式形式將邏輯放在另一個位置,並使用UserControls,以便您可以在不同的控件中使用不同的功能(使用其控制器或演示者,具體取決於您是否實現了MVC或MVP)。分而治之。

+0

我認爲只應用MVP並不是一個完整的答案,我們可以應用壞這個概念,並獲得3個文件,一個用於視圖(** sample.designer **文件)另一個用於控制(** sample.cs **文件)和模型的最後一個(** model.cs **)。這種模式和其他模式必須伴隨着良好的課堂/組件設計。 –

+0

是的,這就是爲什麼我也建議爲表單和控件建立一個凝聚力模型。無論如何,你總是可以嚴格應用一個概念。 – ivowiblo

0

我不認爲我是一個專家,但是一旦我們遇到了一個類似的問題,一個沒有停止成長的主要形式。

該解決方案只是OOP,可以創建獨立和可重用的類,這些類可以位於具有內部可見性的相同名稱空間中。

例如,有你有ComparisionForm.Menu看起來是可以從主代碼獨立的在ComparisionForm

從視圖另一點「可讀性」 .-部分類是有用的,但考慮到即使在不同的文件中的代碼劃分,邏輯並不總是分割,使代碼難以閱讀,理解並最終難以維護。

邏輯上劃分我的班級是我的解決方案。你知道他們說什麼「分而治之」

+1

看來「分而治之」就是這裏的口號:P – ivowiblo

0

我認爲分離窗體代碼的最好方法就是使用UserControl。

在我的情況下,當我有一個大班級時,我使用區域而不是部分班級。

+1

地區是萬惡之源 – ivowiblo

+1

大班是萬惡之源:) – Hyralex

+2

是的。但它就像有一間骯髒的房間,而不是清理它,你把它藏在地毯下面。 – ivowiblo

0

不親,但我的兩分錢是:不要有一大類。將大部分代碼提取到其他類。

你也可以獲得,你將能夠使大部分方法private,從而減少智能感知「噪音」。