簡體   English   中英

舊版代碼的Java重構策略

[英]Java Refactoring Strategy for Legacy Code

我被要求對一些舊代碼進行單元測試。

當前,代碼在方法調用和使用的類型方面都與第三方庫緊密結合。

我的第一個想法是對第三方庫進行存根(使用適當的模擬框架),以便我可以輕松地測試感興趣的代碼,而不是第三方庫。 但是,為此,我需要重構一些代碼,以便將感興趣的代碼與外部庫依賴項隔離開。

我最初的想法是提取一個接口,然后使用包裝器對該庫進行調用。 但是,要完全分離庫,我也需要刪除特定於庫的類型,而不僅僅是方法調用,例如

LibrarySpecificType[] myVar = wrappedLibrary.DoX();

盡管我在上面的示例中包裝了庫調用,但是它仍然返回特定於庫的類型,因此仍然有些耦合。

我該如何解決? 重構代碼以實現此目的的最佳策略是什么?

謝謝!

  1. 我同意您的觀點,為第三方lib提供外觀是一個好主意。 然后談論這個立面而不是第三方庫。 因此,lib被引用的唯一位置是在您的外觀中。

  2. LibrarySpecificType的問題有點問題。 同樣,您可以將它們包裹起來,但這有幫助嗎? 不確定

  3. 至於測試。 我會使用mockito / powermockito。 您可以告訴它從庫的模擬返回模擬(LibrarySpecificType),並以此方式進行測試。 顯然讓模擬返回模擬是不良設計的標志,在這種情況下,手指指向LibrarySpecificType

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM