static import는 무엇인가?
static import는 일반적인 import와는 다르게 메소드나 변수를 패캐지, 클래스명없이 접근가능하게 해줍니다.
import static java.lang.Math.*;
public class StaticImportCase {
public static void main(String[] args) {
Double pi = Math.PI;
Double pi2 = PI;
}
}
위 코드를 보면 Math클래스에 대해 static import를 하고 있습니다.
static import를 해줌으로써 Math.PI
를 PI
로 사용할 수 있게 됬습니다.
굳이 이렇게까지 줄일 필요가 있을까? 싶습니다.
그러나 필요할 때가 있습니다.
테스트 프레임워크인 JUnit을 사용하다보면 static import의 적절한 예를 살펴볼 수 있습니다.
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
public class StaticImportTestCase {
@Test
public void nonStaticImport() {
Assert.assertThat(1, CoreMatchers.is(1));
}
@Test
public void staticImport() {
assertThat(1, is(1));
}
}
위의 테스트는 static import를 적용하지 않았을 때이고, 아래의 테스트는 static import를 적용했을 때입니다.
static import를 하게 되면 코드를 읽을 때, That ~ is ~로만 읽어서 한 눈에 의도를 파악할 수 있습니다.
이 테스트는 "That is 1"이 참인지 거짓인지 판단하는 것입니다. 여기서 That은 1입니다.
즉, 1은 1이다. 라는 것을 영어문장 읽듯이 코드를 읽을 수 있습니다.
만약 static import를 안 했다면 테스트의 의도가 한 눈에 들어오지 않을 것입니다.
지금은 비교적 간결한 테스트이기 때문에 굳이 static import하지 않아도 괜찮을지 모르겠지만, 길어지면 조금 고생스럽습니다.
'프로그래밍' 카테고리의 다른 글
세션(session)이란 무엇인가? (0) | 2020.05.07 |
---|---|
CQS(Command-Query Separation) (0) | 2020.03.15 |
AWS EC2 INSTANCE SCHEDULER로 INSTANCE 자동으로 켜고 끄기 (4) | 2020.03.03 |
스프링부트 - Controller란 무엇인가 (0) | 2018.06.16 |
자바 StringBuilder 사용법 및 사용하는 이유 (5) | 2018.04.10 |