DEV Community

Sewon Ann
Sewon Ann

Posted on

import * 을 쓰지 말아야 할 또 하나의 이유

import * (wildcard import)는 가급적 쓰지 말라고 얘기한다. 일일이 import 하면 명확히 내가 뭘 갖다 쓰는지 알 수 있고, 엉겹결에 의도치 않은 녀석이 딸려와서 호출되는 잠재적인 오류도 막을 수 있다.

그리고 어제, 순환 참조 문제를 바꾸기 위해 이 모듈에서 저 모듈로 클래스를 옮기는 과정에서 * 을 쓰지 말아야 할 또 하나의 이유를 찾았다.

import * 을 해 버리면 replace all 로 내가 옮긴 클래스의 import 문만 기계적으로 바꿔버릴 수가 없다. 물론 대부분의 move 리펙터링은 IDE 를 이용해서 하기 때문에 문제가 없지만, 어제와 같이 대량의 move를 할 땐 하나하나 옮기는 것 보다 무식하게 그냥 cut & paste 해 버리고 import문만 replace all 하는게 훨씬 빠르다. 클래스 하나 옮길 때 마다 안드로이드 스튜디오의 import optimize가 도는데 너무 느려서 내가 돌아버릴 지경.

import * 을 안했다면 replace all 기능을 이용해 내가 옮긴 클래스의 import 문을 기계적으로 바꿔버릴 수 있다. 예를 들어 com.me.A 클래스를 com.you.A 로 옮겼다면, import com.me.A 를 싹 import com.you.A 로 바꾸면 끝난다.

하지만 import * 을 해서 해당 클래스를 사용하고 있었다면, replace 조건에 걸리지 않기 때문에 일일이 찾아다니면서 바꿔줘야 한다. 그런 클래스의 import 문에는 import com.me.* 만 있지, import com.me.A 가 존재하지 않기 때문이다.

그러니 적어도 플랫폼쪽 클래스 같이 내가 바꿀 일이 거의 없는 클래스라면 wildcard import를 조금이라도 고려할 이유가 있겠지만, 내가 짜는 클래스라면 wildcard import를 하지 말자.

안드로이드 스튜디오를 쓴다면, settings > code style > kotlin (java) 메뉴에서 간단히 기본 설정을 바꿀 수 있다.

Top comments (0)