處理的依賴性變動的良好做法是相同的應用程序設計良好做法。您希望對體系結構進行分層,並儘可能減少代碼在每個依賴項上的廣泛耦合,以便將更改隔離開來,以便升級依賴關係不會破壞應用程序的每個部分。接口並使業務邏輯與基礎架構代碼分離的代碼。
對於小型升級(依賴的升級點發行),它可以幫助如果你有一個全面的單元測試,以檢測由於API的變化故障。這是爲什麼它有時可以幫助編寫看起來在表面上始終工作的簡單測試的一個重要原因。一個例子是編寫一個簡單的JDBC單元測試來執行一個簡單的查詢。這看起來像是浪費了精力,直到在數據庫升級後發生JDBC驅動程序的運行時問題(它發生在我身上)之前。對於較大的更改(例如像Spring之類的不兼容版本的框架之間的升級),如果您有一些自動化的功能或集成測試,或者至少有一個功能規範,您的QA人員可以運行以驗證高級別功能。如果您正在升級的框架API不同,單元測試可能不再相關,需要進行大量的代碼更改。
管理從一個版本的依賴到另一個不兼容的版本的實際策略部分實際上取決於你在做什麼。成熟的圖書館將提供某種遷移路徑,並希望不會要求您重寫所有內容。將與框架升級相關的代碼更改與實現新功能相關的更改分開是一個好主意。通過這種方式,如果出現問題,您將知道它與框架升級有關,而不是您在實現新功能時破壞的內容。
使這非常困難的部分原因是,在運行時,您的JVM中只能有一個特定依賴項的版本,因此您必須一次更新所有代碼。 OSGi通過允許運行不同的OSGi包依賴於不同的依賴版本來解決這個特定的問題,所以你可以在運行時依賴於不同的依賴版本。這就是Eclipse如何在不破壞其他插件的情況下管理插件的依賴關係。
我明白你在說什麼,但你正在掩蓋這個問題。完全。 假設你處於這種情況之一,有哪些最佳實踐? (或者每個人只是讓Eclipse(也許m2eclipse)讓你知道類不再存在,已經不再使用,等等...並從那裏去?) 對於我的問題的第二部分,保持你的依賴有點到目前爲止,如果您已經升級到具有'Securer X 2.0'功能的版本並減少了任何中斷,那麼您可以更容易地進行升級(或者不必要)。 –
我想說的最佳實踐是:只有當您使用的依賴項版本變得明顯時,纔會更新您的依賴關係。讓你的IDE告訴你什麼時候某個東西被棄用或者不再存在,這就是它的存在。我不相信保持最新會阻止未來廣泛的代碼更改。這假設你的依賴關係發展的知識。你所能做的就是測試,測試,測試並最小化你對依賴關係的依賴。 – Joel