2011-12-13 72 views
12

在我的項目中,我有一個shapes包,它具有我爲我的圖形程序設計的形狀,例如Rectangle,Circle。我還有一兩個包與java.awt類具有相同名稱的包。太多導入垃圾我的代碼

現在,因爲我不希望每節課在我的代碼庫重命名,以示我的源文件,這班我的意思是,當我,說,宣佈一個新的Rectangle,我需要:

1-進口矩形類顯式的,即進口shapes.Rectangle

OR

2-進口僅java.awt中類我需要和不導入的java.awt。*自動包括所述awt.Rectangle

現在的問題是,這兩個方面導致很多進口的,我目前在每一個源文件的平均15-25進口,嚴重使我的代碼混合,並混亂。

代碼中的導入太多是一件壞事?有沒有辦法解決?

回答

9

是的,太多的導入是一件壞事,因爲它混亂了你的代碼,導致導入的可讀性降低。

使用通配符避免長時間導入列表。

凱夫林·海尼這個確切的堆棧溢出問題27:54會談到他的介紹Clean Coders Hate What Happens to Your Code When You Use These Enterprise Programming Tricks從NDC倫敦16-20 2017年1月

+1

根據https://stackoverflow.com/questions/147454/why-is-using-a-wild-card-with-a-java-import-statement-bad?noredirect=1&lq=1這是不好的,因爲它雜波並可能會混淆你的命名空間。 –

+1

這也是噩夢處理合並衝突只是在格蘭進口段,由於使用更少的進口時打一些treshold或膨脹後塌陷成*。 – Hurda

2

在Java世界中有很多導入是正常的 - 你真的需要導入所有東西。但是,如果您使用IDE(如Eclipse),則會爲您執行導入。

3

另一種替代方法是在需要時輸入完全限定的類名。在我的例子中,有2個Element對象,一個是我創建的org.opensearch.Element和另一個org.w3c.dom.Element

要解決名稱衝突,以及減少進口「雜波」,我這樣做(在我org.opensearch.Element類):

public org.w3c.dom.Element toElement(org.w3c.dom.Document doc) { /* .... */ } 

正如你所看到的,返回Element類型是fully-鍵入(即我已經指定了完整的類名Element)。

問題解決! :-)

5
  • 這是一個很好的做法是通過類進口,而不是導入整個包

  • 任何好的IDE類,如Eclipse的,會崩潰在一行進口,並且可以在需要時擴展它們,這樣它們不會混亂您的視圖

  • 如果發生衝突,您始終可以引用完全限定的類,但是如果兩個類中的一個在您的控制之下,則可以考慮重命名它。 (在Eclipse中,右鍵單擊該類,選擇Refactor -> Rename,它將小心更新其所有引用)。

  • 如果您的課程是從AWT導入並從您的形狀包中導入的,則可以。可以從幾個類中導入;然而,如果你發現自己從很多不同的來源進口,這可能表明你的班級做得太多,需要分手。
+0

這個答案不包含任何參數,爲什麼它是更好地使用了通配符明確進口,但只是說「集成開發環境使它更小的痛苦」,即治標,而不是原因。這就是爲什麼我決定放棄這個答案。 – Qqwy