2009-02-09 28 views
2

我覺得需要將基於CF5的舊代碼重構爲CFC。我們在ColdSpring和Transfer中已經有了一些代碼,但感覺ColdSpring的重寫變得很大,而Transfer則毫無意義。將ColdFusion 5基於標記的代碼重構爲CFC

我打了什麼提示,方法和陷阱。

我該如何使這容易?

我不介意讓ColdSpring保留在組合中,但Transfer是我害怕項目大小的一點。

編輯:我的代碼庫已經進行了7 - 8年,是廣闊的。描述這將是困難的,但是我正在尋找通用的方法建議

回答

4

僅僅爲了它而改變整個代碼庫,如果它基本上工作的話,會引入很多潛在的錯誤到你的系統中。我不認爲有一個簡單的方法來做到這一點。

如果你看看你的網站的哪些領域是1:最有可能發生變化,2:執行得最多,你可能會瞄準某些可能從變化中受益的領域,並看看它們如何容易地融入CFC基於框架的框架,還有什麼好處但是對於大多數代碼來說,如果它工作正常,可能沒有迫切需要改變。

但是,無論何時您需要對系統的一部分進行重大更改,可能需要從面向對象的角度來查看並在適用的情況下移動現有代碼。

1

這是非常困難的(接近不可能)在不知道您的任何代碼的情況下回答。

這個問題有點像「我想拆解我的舊大衆汽車,並從零件中建立一個新的,我應該考慮什麼?」 :-)

+0

感謝您的支持。我已經編輯了這個問題,將其改爲通用的建議,我會採取這種方法 – 2009-02-09 11:06:14

3

在我正在進行的項目中(幾乎相同的情況,甚至更多 - 大部分代碼非常糟糕),我正在使用我稱之爲「波形風格」的技術。我使用的一般思路如下:

  1. 從輸出中分割處理。我不能在這裏實現真正的MVC,但至少我可以將視圖移動到單獨的模板(有時重用它們)並準備基本(模型)模板中的所有數據。
  2. 將所有重複的代碼移動到組件中 - 這是最重要的提示之一。
  3. 將相關功能組合到組件中。假設所有客戶相關信息分組到CustomerManager.cfc,發票納入InvoiceManager.cfc等

爲什麼「波」?在一個大項目中,我不能坐下來重寫所有與客戶相關的代碼。所以我已經一步一步來。例如,我必須從事客戶註冊工作,並將其擴展爲幾個屬性。我創建了基本組件,移動了驗證表單的方法(檢查登錄,電子郵件等)並添加客戶 - 因此此頁面以新風格工作。我需要改進發票頁面,在那裏我需要獲得發票所有者的詳細信息:我只是將方法添加到客戶經理並擺脫直接查詢。稍後編輯客戶頁面...也可以稱爲「按需重構」或不適用。

可以有額外的東西依賴於您當前的項目狀態。但它對我很有幫助。希望你會發現這些提示有用。

1

我的建議是通過封裝業務邏輯爲氟氯化碳,而不用擔心你的網站的整體表現層開始。

通過只是專注於業務邏輯,你就可以得到的最重要的功能集成到CFC和疏導維護的噩夢。將這些CFC「投入」現有網站也不會太難。

得到儘可能多的業務邏輯到氯氟烴後,你可以,你會發現巨大的怪物已經被削減到大小。此時,您現在可以決定要對網站的表示層執行什麼操作。您現在可以從可用的多種框架(CFWheels,FuseBox,ColdBox,Mode-Glue)中自由選擇以移植到表示層。

或者你可以只說「見鬼吧」,並從一開始:)

3

之前,你改變什麼重寫CFWheels整個事情:建立一套完整的迴歸測試!

重構時,將目標首先必須保存功能,這樣你就不會直接影響你的客戶。

我同意塞爾吉的波浪式的重構也 - 這可以讓你打破東西成可管理的塊,而不是一步到位做的一切。

但你擁有的任何方法,更多的迴歸測試,你可以創建,更好 - 這是真的,你可以確認你的唯一辦法都沒有意外更改的東西。

1

如果您沒有使用版本控制,請在執行任何其他操作之前先完成設置。能夠從破碎的重構中退出是一個嚴肅的生命保護程序。之後,我同意發佈的內容。你一定會想要分小塊 - 分而治之。