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

dohyun_lim님의 프로필 이미지

작성한 질문수

토비의 스프링 6 - 이해와 원리

변하지 않는 코드 분리하기 - 메소드 추출

변하지 않는 코드 분리하기 - 메소드 추출

해결된 질문

작성

·

90

0

안녕하세요 토비님

변하지 않는 코드 분리 commit 에서 WebApiExRateProvider가 private "static" 인 이유가 있나요?

강의에서는 extract method 단축키로 만드셨는데 왜 intellij가 static을 붙이는것을 추천해줬는지 도 좀 궁금합니다...

답변 1

1

토비님의 프로필 이미지
토비
지식공유자

메소드 추출을 하면 static 메소드로 만들어지는 걸 눈치채셨군요.

사실 저도 이건 생각을 못하고 있다나 강의 리뷰하면서 보고 살짝 놀랐던 기억이 있습니다.

언제부터인지 모르겠지만 IntelliJ가 자바 코드에서 메소드 추출 리팩터링을 하면 static 메소드로 만드는 게 기본 옵션으로 되어있더라고요. 인스턴스 변수를 사용하제 않는 코드는 static으로 만드는 것 같은데, 정확한 의도는 잘 모르겠습니다. 그렇게 해도 동작에는 문제가 없긴 하지만 굳이 그럴 필요는 없을 듯해서 저도 좀 의아했습니다.

옵션을 조정하면 static이 아닌 메소드로 추출하는 것도 물론 가능한데 이게 디폴트가 아니네요.

image.png

검색해봤지만 IntelliJ 개발자들의 의도가 무엇인지는 찾을 수는 없었네요. 아직도 바뀌지 않은 것으로 봐서는 버그는 아닌 듯하고, 최적화 관련 의도가 있는 게 아닌가 싶긴 합니다.

어쨌든 저도 생각 못했던 부분이긴한데 일단 기능으로는 문제는 없고, 이후에 더 나는 방법으로 확장해 가면서 그때 static을 제거하기도 했습니다. 이건 저도 좀 더 생각해보고 싶은 내용이네요.

일단 IntelliJ에서 메소드 추출 기능을 사용하시면 단축키는 메뉴에서 사용하든 static일 수도 있고, 옵션 아이콘을 눌러서 변경할 수도 있다는 것을 기억해두시면 좋겠습니다. 개인적으로는 static 메소드에서 추출이 아니라면 굳이 static으로 변경하지 않는게 더 낫지 않을까 싶습니다.