陷阱 - 萬用字元匯入會使你的程式碼變得脆弱

考慮以下部分示例:

import com.example.somelib.*;
import com.acme.otherlib.*;

public class Test {
    private Context x = new Context();   // from com.example.somelib
    ...
}

假設當你第一次開發針對 somelib 版本 1.0 和 otherlib 版本 1.0 的程式碼時。然後在稍後的某個時刻,你需要將依賴項升級到更高版本,然後決定使用 otherlib 2.0 版。還假設他們對 otherlib 在 1.0 和 2.0 之間做出的改變之一是新增一個 Context 類。

現在當你重新編譯 Test 時,你會得到一個編譯錯誤,告訴你 Context 是一個含糊不清的匯入。

如果你熟悉程式碼庫,這可能只是一個小小的不便。如果沒有,那麼你有一些工作要做,以解決這個問題,在這裡,也可能在其他地方。

這裡的問題是萬用字元匯入。一方面,使用萬用字元可以使你的類縮短几行。另一方面:

  • 向程式碼庫的其他部分,Java 標準庫或第三方庫向上相容的更改可能導致編譯錯誤。

  • 可讀性受到影響。除非你使用的是 IDE,否則確定哪個萬用字元匯入會在命名類中進行操作可能會很困難。

經驗教訓是,在需要長壽的程式碼中使用萬用字元匯入是一個壞主意。如果使用 IDE,特定(非萬用字元)匯入的維護工作量不大,值得付出努力。