2016-07-21 7 views
1

공통 패키지의 많은 Java 프로그램에 너무 많은 공통 import 문이 있습니다. 가져 오기 문장을 제외하고 코드를 작고 깔끔하게 만드는 방법. 예 :Java에서 가져 오기 명령문 리팩터링

JavaProgram1.java :

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

JavaProgram2.java : 지금은, 내가 함수 나 자바 가지의 매크로 유형을 원하는되고 싶은

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

단일 문장을 사용하여 모든 패키지를 가져 오려면 공통 패키지의 모든 프로그램에서 동일한 패키지를 사용할 수 있어야합니다.

+0

와 왜의 모든 패키지를 가져올 할 모든 수업? 왜 그냥 필요한 것들이 아닌가? – sidgate

+1

많은 패키지를 가져와야하는 경우 어쨌든 클래스가 부 풀릴 수 있습니다. 따라서 먼저 코드를보다 합리적인 조각으로 분리 할 수 ​​있는지 확인해보십시오 (예 : 단일 책임 원칙을 준수하려고 시도). 그 외에 실제로 필요한 클래스 만 가져옵니다. 마지막으로 대부분의 IDE는 어쨌든 가져 오기 블록을 축소하므로 단 하나의 명령문이나 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

, 당신은 수동으로하지 않습니다.

알맞은 IDE는 모든 것을 제공합니다 (예 : Eclipse에서 가져 오기를 구성하기 위해 Ctrl-O 만 입력). 그래서 당신은 때때로 ctrl-o를 누르기 만하면됩니다. 또는 이것이 옵션 인 경우 eclipse가 각 저장시 가져 오기를 구성하도록 구성합니다. 이러한 정책을 확장하여 내장형 포맷터를 실행할 수도 있습니다.

아이디어는 기본적으로 다음과 같습니다. 확실히 여기에 일종의 공구를 사용하고 싶습니다. "수입품을 조직하는 것"은 인간이 1 초를 낭비하고 싶지 않기 때문에 당신이해야 할 일입니다.

다른 중요한 측면 : 소스 코드를 수정해야하는 모든 사람들이 툴링에 동의해야합니다. 다른 툴링을 사용하고 있기 때문에 많은 델타가 포함 된 변경 기록을 피하기 만하면됩니다. 이리.

당신은 더욱 한 단계를 이동하고 (백그라운드에서 정말 자동으로 수행하도록)처럼, 당신을 위해 그렇게 할 빌드 환경을 사용할 수 https://github.com/ajoberstar/gradle-imports