Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
관리 메뉴

ㅇ.ㅇ

[IDE] Intellij 와일드카드 import 방지 본문

Today I Learned

[IDE] Intellij 와일드카드 import 방지

yun_ 2024. 10. 20. 23:26

 


소스 코드를 짤 때, 하나 둘 import를 하게되면 어느순간 자동으로 wildcard(*)로 변환된다. 나는 이제껏 그게 당연하거라고 생각했는데 사실 이렇게 사용했을 시 야기되는 문제들이 있다. 

 

와일드카드(*) 임포트의 문제점

import java.util.*;와 같은 와일드카드 임포트는 java.util 패키지에 있는 모든 클래스를 임포트하겠다는 의미이다. 이 방식은 코드의 간결함 때문에 많이 사용되지만, 몇 가지 문제가 있다.

  1. 가독성 저하
    • 어떤 클래스가 실제로 사용되고 있는지 명확하지 않다. 예를 들어, java.util에는 List, Map, Set 등 많은 클래스가 있는데, 코드에서 어떤 클래스를 사용하는지 한눈에 알기 어려워진다. 이로 인해 협업이나 유지보수 시 불편함이 생길 수 있다. 개발 컨벤션 맞추는 경우도 있으니까.
  2. 이름 충돌 가능성
    • 여러 패키지에서 동일한 이름의 클래스를 사용할 경우, 와일드카드 임포트로 인해 이름 충돌이 발생할 수 있다. 예를 들어, java.util.Date와 java.sql.Date를 동시에 사용해야 한다면, 와일드카드 임포트는 어떤 Date 클래스가 임포트되었는지 불분명하게 만들어 문제를 일으킬 수 있다.
  3. 불필요한 임포트
    • 와일드카드 임포트를 사용하면 실제로는 사용되지 않는 많은 클래스들이 포함된다. 이게 가장 중요할 것 같다. 왜냐하면 이는 메모리 측면에서는 직접적인 영향이 없을지는 몰라도, 코드의 명확성을 떨어뜨리는 요인이 되기 때문이다. 

 

개선하려면? 명시적 임포트 사용

위처럼 와일드카드말고 사용하는 클래스만 명시적으로 import하는 방식이 권장될 것이다.
어떤 클래스들이 코드에서 사용되는지 명확해질 수 있도록말이다. 

 

Intellij에서 자동 와일드카드 임포트 방지 

IntelliJ에서 기본 설정으로 임포트가 일정 개수 이상이면 와일드카드 임포트로 변경되는 경우가 있다. 이를 방지하려면 IDE 설정을 변경해 명시적 임포트를 유지하도록 할 수 있다.

  • Settings -> Editor -> Code Style -> Java -> Imports

  • Use single class import (단일 클래스 임포트 사용)
    • 이 옵션에 체크하면, IntelliJ는 임포트를 할 때 가능한 한 단일 클래스만 명시적으로 임포트한다
  • class count to user import with * (와일드카드 임포트 사용을 위한 클래스 수)
    • 특정 패키지에서 몇 개 이상의 클래스를 임포트할 때 와일드카드 임포트를 사용할지 결정하는 임계값
      • 기본 값은 5로 설정
      • 0으로 설정하면 와일드카드를 절대 사용하지 않도록 설정된다.
  • names count to user static import with * (정적 임포트 시 와일드카드 사용을 위한 이름 수)
    • 정적 멤버를 임포트할 때 와일드카드(*)를 사용할지 결정하는 임계값
      • 0으로 설정하면 정적 멤버를 명시적으로 각각 임포트한다.
반응형