2009-10-28 117 views
2

我已經繼承了一個asp.net項目,並且我發現頁面背後的代碼包含很多業務邏輯。重構將業務邏輯與代碼分離

我已經決定,在大多數情況下,最好離開工作代碼,而不是嘗試做大規模的重構。但是,有些頁面執行的功能可以在命令行實用程序中重新用於批處理。我想集中精力在這些頁面上,重構業務邏輯並參考其他實用程序。

我目前正在尋找重構這個特殊的頁面,其代碼後面有6200行代碼。我發現的是,試圖找到後臺代碼和頁面特定對象之間的依賴關係是非常單調乏味的工作。

我想知道是否有人知道一個工具,一個VS功能,或一種方法,可以讓我係統地定位和攻擊這些依賴關係?有些東西可以讓我識別引用ViewState,文本框,面板,下拉列表等的代碼的任何區域,所以我可以將這些引用移到方法參數中,並最終將此功能移出頁面類。我可以馬上想到

回答

3

我會首先檢查任何不遵循Single Responsibility Principle的方法,並將它們分解以便它們可以執行。一旦完成,您應該掌握代碼的功能,並且您應該能夠更輕鬆地對代碼進行分組,並將其移至專用的類中,以便創建必要的對象以供您隨時使用。我發現ReSharper是一個非常有用的工具來幫助完成這一切。最終,在成功重構之前,您始終需要牢牢掌握代碼中的基礎知識。

我們都曾經在那裏,並且你有我最深切的同情心,但是你願意嘗試這一切意味着你已經朝着正確的方向前進。祝你好運!

0
+0

NDepend是否顯示比裝配等級更精細的糧食依賴信息?給定一個班級成員,它能告訴我該成員依賴的其他班級成員嗎? – Aheho 2009-10-28 18:45:47

+0

我不這麼認爲。它可能只是給你一個鳥瞰圖 - 你可以從鳥瞰本身開始。你可能會發現使用NDepend的所有頁面之間的依賴對稱性可能對你有幫助。 – 2009-10-28 18:55:26

0

哇首先對不起來這裏組裝。任何人會在後面的代碼中放入6000行代碼應該被打破:)

現在我已經完成了這種重構。我會在幾個步驟處理這個:

(1)創建邏輯區域#REGION和#EndRegion 一樣 - 保存方法,load方法或 (2)看看你是否可以基於在這些地區建立物理的業務對象的業務 圖層 (3)完成後,只需將所有代碼都引用到相應的類。

我知道你想要一些工具,使這一切都消失,但我害怕通過這樣做,你會挖洞北斗。理解代碼並通過方法移動它的方法將會給你更好的理解。