我一直在研究Java Swing項目。它的設計很差。我被賦予了使其設計更好的任務。首先,我想通過遵循MVC模式來分離Java Swing代碼和業務代碼。有沒有Java Swing GUI邏輯和業務邏輯解耦的工具/軟件?
手動執行此操作似乎很容易出錯。是否有任何解耦GUI層代碼(用Java Swing編寫)和業務層代碼(用核心Java編寫)的工具/軟件。
我一直在研究Java Swing項目。它的設計很差。我被賦予了使其設計更好的任務。首先,我想通過遵循MVC模式來分離Java Swing代碼和業務代碼。有沒有Java Swing GUI邏輯和業務邏輯解耦的工具/軟件?
手動執行此操作似乎很容易出錯。是否有任何解耦GUI層代碼(用Java Swing編寫)和業務層代碼(用核心Java編寫)的工具/軟件。
據我所知,這個問題的答案是「不,沒有這樣的工具。」
我想冒險說一個人甚至不可能製作這樣的工具。問題在於沒有簡單的方法來區分「業務邏輯」和「GUI」代碼。
在我所從事的項目上,我們在設計階段做出了一致努力,以保持GUI和業務邏輯的分離,但我無法計算不可避免的次數,特別是當一些業務規則驅動GUI應該如何表現時。
我不羨慕你的任務。處理和修改現有代碼,特別是您沒有創建的代碼,容易出錯。而MVC編程的整個概念實際上只是考慮如何構建一個程序,而不是一組現有的工具庫來使用。
我在Smalltalk的日子裏學習了MVC編程,當時它最初是由施樂公司的聰明人發明的,甚至他們無法避免代碼的交叉耦合。
當輸入定義良好並且結構合理時,自動工具可以很好地工作。根據你所描述的內容,你的投入遠不止於此。
是的,做這項工作會變得複雜而且很多工作。但這是你需要捲起袖子並潛入其中的東西。在你開始觸摸代碼之前,請坐下來,確保你完全理解事物現在的佈局(以及爲什麼這是一件壞事)。然後開始計劃如何做得更好。
現在您已經制定了應該如何做的計劃,開始使用代碼並更新遺留代碼。
+1「捲起袖子」;我會說同樣的事情。 – Jeremy 2011-03-08 16:13:21
沒有工具,但有技巧。
重構是對代碼進行微小更改以改變其體系結構而不改變其功能的一種做法。你可能已經完成了一定程度的重構,但是有時候讀一些你知道的主題可以幫助提高你的技能。
許多IDE支持一些簡單的重構。 Eclipse和NetBeans在重構支持方面具有不同的優勢,並且根據您當前的環境,您可能會發現其中一個更有用。
什麼重構不會爲你做的是給你一個如何從A點(你的麪條代碼)到B點(你乾淨地分離出來的MVC)的路線圖。相反,它只會讓你成爲更好的司機。不幸的是(對所有開發人員來說幸運的是,所有開發人員都很幸運)仍然需要良好的頭腦來確定哪些代碼段有意去做,以及它們是否更適合放置在模型,視圖或控制器中。剩下的就是以這樣一種方式剔除依賴關係,即最終可以按順序向上或向下移動代碼,並最終將其推入一個方法,然後可以將其移至相應的類。
祝你好運。
我也不知道任何工具。正如其他人在這裏指出的那樣,我認爲這樣的工具最終會讓程序員變得多餘。我們不想那樣做,我們。 :-D
但是,手動檢查是否實際設法解耦代碼不應該複雜。只要確保你的「營業部分」進口無搖擺包:
它不能與工具來完成,這就是爲什麼Java體系結構在世界上 – 2011-03-08 16:02:31
存在我不明白的問題。只需使用不同的類。你也可以將它們打包到不同的罐子裏。或者你需要什麼? – Puce 2011-03-08 16:03:04
我想他想以編程方式將已經寫好的搖擺代碼分開。如果是這樣,手動做這件事似乎對我來說更不容易出錯。 – 2011-03-08 16:04:31