2010-11-09 27 views
5

我繼承了一年前由某人開發的JSF項目,該項目不再適用於我的公司,而且代碼真的很難理解。它似乎很多都是由IDE自動生成的,尤其是類的getter和setter。實際上,每個私人領域都有關聯的getter和setter,即使他們沒有在項目中的任何地方被引用。
我想在嘗試理解項目之前擺脫所有這些無用的代碼,但鑑於它是JSF項目,bean的屬性可能在xhtml文件中被引用,因此在使用「show references」時不會顯示,命令。
有沒有辦法知道哪些方法是真的無用,爲了安全地刪除它們?有沒有辦法知道JSF項目的xhtml文件中引用了哪些bean屬性?

我使用eclipse,但每個允許這樣做的工具都將是一個很大的解脫!

回答

1

我不認爲有一種方法,除了搜索.fieldname。但更重要的是,生成的setter和getter(如果它們只包含數據對象)並不是理解項目的嚴重障礙。所以你可以跳過那個清理部分。

+0

好吧,我會堅持文本搜索......我知道自動生成的setters和getters並不是真正的障礙來理解項目,但我認爲我可以快速刪除大量未使用的代碼,這總是很好。如果我必須爲每個吸氣劑進行文本搜索以瞭解是否可以將其移除,我想我會推遲這個清理。 – 2010-11-09 15:21:22

1

我認爲在現有的JSF項目中進行潛水之前,最好先學習和使用JSF。 Getters/setters僅用於獲取要在HTML輸出中顯示的數據並從HTML表單輸入中設置請求參數。例如。在視圖中的<h:inputText value="#{bean.foo}" />需要bean.getFoo()才能顯示值,而要求bean.setFoo(String value)才能設置提交的值。所以,把它們留在那裏,專注於行動方法。

對於這些工具,Eclipse不提供工具/工具,因爲它們可能是通過反射而不是直接引用來調用的。幾乎不可能檢測到這一點。至少,很高興知道setter從不需要輸出組件,例如<h:outputText value="#{bean.foo}" />或嵌套的bean,如<h:inputText value="#{bean.nested.foo}" />。然而,只要將嵌套bean作爲託管屬性注入,setter就是必需的。

我自己只是隱藏了遠離整個課堂底部的吸氣/吸氣器。動作方法(至少,非getter/setter方法)恰好在構造函數之後。您甚至可以將IDE配置爲在自動生成期間將它們放置在那裏。

相關問題