인프런 커뮤니티 질문&답변

카드캡터솔쨩님의 프로필 이미지
카드캡터솔쨩

작성한 질문수

김영한의 실전 자바 - 기본편

static 메서드3

[static 메서드3] 강의 보고 질문드립니다.

작성

·

338

0

[static 메서드3] 강의 보고 질문드립니다.

import static 으로 특정 클래스의 메서드 적용해서 메서드 사용하는 것과 클래스 .(dot) 찍고 메서드 사용하는 것 중

실무에서는 어떻게 사용하는 편이 좋은지 궁금합니다.

답변 2

4

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 카드캡터솔쨩님

클래스 이름으로 접근하는 것과 import static 사용하는 것은 정답이 있다기 보다는 각각 장단점이 있습니다. 실제로는 한 클래스안에서도 두가지 방식을 함께 사용하는 경우도 있습니다.

클래스 이름으로 접근

장점

명확성: 메서드 앞에 클래스 이름이 명시되어 있어 어떤 클래스의 메서드인지 명확하게 알 수 있습니다. 이는 코드의 가독성과 유지보수성을 향상시킵니다.

단점

코드 길이: 클래스 이름을 매번 명시해야 하므로 코드가 더 길어질 수 있습니다.

 

import static 사용

장점

코드 간결성: 자주 사용되는 클래스의 정적 메서드나 상수에 대해 import static을 사용하면, 클래스 이름을 생략할 수 있어 코드가 더 간결해집니다.

가독성 향상: 특정 메서드나 상수가 코드 전체에서 자주 사용되는 경우, import static을 사용하면 코드가 더 읽기 쉬워질 수 있습니다.

단점

명확성 감소: 클래스 이름이 생략되면, 메서드가 어느 클래스에 속하는지 바로 알아보기 어려울 수 있습니다. 이는 특히 여러 클래스에서 동일한 이름의 메서드가 사용될 때 혼란을 초래할 수 있습니다.

유지보수의 어려움: 코드를 나중에 다시 보거나 다른 사람이 코드를 볼 때, 정적 임포트의 출처를 알기 어려워 유지보수가 어려워질 수 있습니다.

 

정리

클래스 이름을 통해서 현재 문맥에서 어떤 기능을 수행하는지 더 명확하게 이해할 수 있습니다.

예를 들어서 Order.create()라고 하면 Order라는 클래스 이름을 통해 주문을 생성한다는 것을 바로 이해할 수 있습니다. 그런데 단순히 create()라고만 되어 있다면 코드를 읽을 때 생각을 좀 해야겠지요?

반대로 import static이 더 유용한 경우도 있습니다. 예를 들어서 자주 사용하는 유틸리티 클래스 같은 것들이 있습니다. 문자가 null이 아니고 ""(빈문자)도 아닌 것을 체크하는 유틸리티 메서드가 있습니다. StringUtils.hasText()와 같은 것인데요. 이런 경우 항상 StringUtils라는 단어를 적지 않아도 개발자들이 이미 익숙한 유틸리티이고, hasText()라는 것 만으로도 충분히 문맥을 이해할 수 있기 때문에 이런 경우에는 클래스 이름을 생략하는 것이 가독성에 더 도움이 됩니다.

정리하자면 둘다 트레이드 오프가 있기 때문에 코드를 읽어 보았을 때 다른 개발자들도 더 쉽게 읽을 수 있는 방법을 선택하면 됩니다. 제가 추천하는 방법은 기본적으로 클래스 이름을 사용하고, 다만 방금 말씀드린 것 처럼 자주 사용되는 유틸리티 클래스의 메서드나 클래스 이름을 통한 문맥이 없어도 되는 경우에는 static import를 사용해서 코드를 간결하게 가져가는 것을 권장합니다.

감사합니다.

1

감사합니다><

카드캡터솔쨩님의 프로필 이미지
카드캡터솔쨩

작성한 질문수

질문하기