2013-02-09 46 views
1

我有一大堆使用類XXX的Java代碼。隨着時間的流逝,班級的含義已經發生了變化,名稱不再合適。爲了使代碼更具可讀性,我想將類的名稱更改爲YYY。Java中是否有增量更改類名的方法?

一種選擇是在一次編輯所有文件並將XXX更改爲YYY,但類的實際名稱不是唯一的 - 還有其他類具有相同名稱,不同包 - 所以我需要看代碼。我希望能夠做出一些改變,測試它是正確的,改變一些,再測試一些,等等。在這個過渡期間,我希望能夠交替使用YYY和XXX。最終我會消除XXX。

我需要的是一個「別名」的概念,我可以在其中創建YYY和XXX的別名,但Java沒有這個概念。

我可以使YYY成爲XXX的一個子類,它具有所有相同的構造函數和方法。在一個變量被聲明爲XXX的情況下,這將工作正常,並且我分配了一個YYY類型的值。它也可以在一個方法參數是XXX的地方工作,並且我傳遞一個YYY。但是當參數聲明爲YYY並且我有一個XXX值發送時,它將不會起作用。

我可以將YYY注入到繼承中,以便XXX擴展YYY,但是我遇到了與上面相同的問題:在混合使用XXX聲明和YYY值的代碼中存在問題。

過渡時間將需要幾個月。在此期間,我不關心性能或效率,我只是需要它來編譯和運行足夠正確的測試。 有關允許在Java代碼體中增量更改類名的最佳實踐的建議?

UPDATE

下面的答案是,雖然沒有辦法在Java中做到這一點,也應該沒有理由要麼。我隨後安裝並重構了代碼,並在此博客文章中寫下了經驗:Don’t Suffer Poor Names

+0

您的系統有多大? – starblue 2013-02-09 16:55:51

+0

隨着系統的發展,代碼庫並不是「巨大的」,但是對於一個人來說,代碼庫並不是很「龐大」:100K到200K行。 – AgilePro 2013-02-09 16:58:50

+0

可能的選擇:給它一個公共版本的字符串字段?給它一個私人的long serialVersionUID字段? – 2013-02-09 17:01:01

回答

3

使用IDE(如Eclipse)並使用其重構工具重命名該類。這將自動更改它在任何地方使用,更新導入等。

+0

你有沒有更具體的改變類名的細節? – AgilePro 2013-02-09 16:52:25

+0

在Eclipse中:右鍵單擊類 - >重構 - >重命名 – verhage 2013-02-09 16:56:55

+0

真正的答案是「沒有辦法擁有兩個等價的類名」我將使用Eclipse來研究執行更改。 – AgilePro 2013-02-11 05:03:35

相關問題