陷阱 - 萬用字元匯入會使你的程式碼變得脆弱
考慮以下部分示例:
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,特定(非萬用字元)匯入的維護工作量不大,值得付出努力。