2016-07-21 2 views
1

共通のパッケージ内の多くのJavaプログラムで共通のインポートステートメントが多すぎます。どのようにインポートステートメントを排除し、コードを小さくてきれいに見せるか。例:Javaでインポートステートメントをリファクタリングする

JavaProgram1.java

package commonPackage; 
import javaPackage1; 
import javaPackage2; 
... 
import javaPackageN; 
.... 
[Code] 

JavaProgram2.java:

package commonPackage; 
import javaPackage1; 
import javaPackage2; 
... 
import javaPackageM; 
.... 
[Code] 

今、私が何をしたい私は、Javaの機能や物のマクロ種類をしたい、です単一のステートメントを使用して、すべてのパッケージをインポートしたいので、共通のパッケージ内のすべてのプログラムで同じものを使用することができます。

+0

と、なぜあなたはすべてのパッケージをインポートしたいですかすべてのクラス?なぜただ必要なものではないのですか? – sidgate

+1

あなたがその多くのパッケージをインポートする必要がある場合、あなたのクラスはとにかく肥大している可能性があります。したがって、まずコードをより合理的なスライスに分割することが可能かどうかを確認します(たとえば、単一責任の原則に従うようにしてください)。それ以外には、実際に必要なクラスだけをインポートします。最後に、ほとんどのIDEはインポートブロックを折りたたむので、1つのステートメントまたは1000しかないかどうかは関係ありません。 – Thomas

+1

eclipseでctrl + shift + o( "Organize Imports")を使用します。 – f1sh

答えて

1

これを行う唯一の方法は、インポートするクラスが同じパッケージ内にある場合です。

import org.foo.package1.*; 

しかし、この場合にインポートするすべてのクラスで:

あなたは

import org.foo.package1.X; 
import org.foo.package1.Y; 
import org.foo.package1.Z; 

あなたは*がorg.foo.package1のようにすべてのクラスをインポートするために使用することができます考えてみましょう読みやすさを少しでも減らすことができるorg.foo.package1

1

最初の注記:あまり心配しないでください。これは頻繁に起こり、IDEはディスプレイから画面を削除し、画面の半分を無駄にしません。あなたは、多くの場合、簡単に私はあなたのコードツリーに

  • を働かなければならないと仮定し

    少ない輸入量を作ることができる、と述べた大きすぎるクラスをしないようにご注意してください。目標(懸念事項)を別のクラスに分け、抽出されたクラスを必要なインポートで使用します。新しく作成されたクラスは、拡張および/または使用することができ、その新しいクラスの従属クラスは、抽出されたクラスでは不要です。

  • クラスAがクラスBを必要とし、クラスA以外のクラスがクラスBを必要としない場合は、クラスBを同じパッケージに保存し、インポートを書き込む(生成する)必要はありません。
  • クラスをインポートするのに(ほぼ)パッケージ全体が必要な場合は、import this.important.package.*と書くことができ、すべてインポートされます。あなたのIDEはおそらくあなたのインポートを最適化し、この1行をいくつかの異なるインポートに書き直します。

幸運:)真剣

1

、手動でそれをしません。

まともなIDEであれば、これを行うことができます(たとえば、eclipseでは、ctrl-oを入力してインポートを整理するなど)。だからあなたは簡単にctrl-oを押すことに慣れています。それがオプションの場合は、各保存時にインポートを構成するようにeclipseを構成します。このようなポリシーを拡張して、組み込みフォーマッタを実行することもできます。

基本的な考え方は、間違いなくここで何らかのツールを使いたいということです。 「組織化された輸入」は、人間が1秒間無駄にしたくないというあなたの仕事です。

他の重要な側面:ソースコードを変更する必要があるすべての人がそのツールに同意していることを確認してください。異なるツールを使用しているという理由だけで、多くのデルタを含む変更履歴は避けてください。ここに。

あなたも、さらに一歩進んで、(それがバックグラウンドで、実際に自動的に行われるように)のように、あなたのためにそれを行うにはビルド環境を使用することができhttps://github.com/ajoberstar/gradle-imports