나는 개발할 때, 특정 모델의 프로퍼티로 사용되는 enum 등의 작은 클래스를 모델 혹은 서비스의 이너 클래스로 밀어넣는 경향이 있다.
그 이유는 첫째로 파일이 많아지는 것에 대한 저항감이 있고,
둘째로는 클래스의 연관성을 보기가 좋기 때문이다.
예를 들면 아래와 같은 식이다.
public class Game {
String name;
Status status;
public enum Status {
IDLE, RUNNING
}
...
}
저것의 호불호를 떠나 저런 식의 개발을 intellij 에서 할 때,
inner class 에 대한 import 를 IDE 기능을 통해서 하면 꼭 아래처럼 들어갔다.
if (game.getStatus() == Game.Status.RUNNING) {...}
워낙에 흔한 키워드라면 오히려 저렇게 보이는게 나을 수도 있긴한데,
해당 참조가 많을수록 종종 코드를 오히려 지저분하게 만드는데 일조하는 것 같다는 생각이 들 때도 있다.
(위 예를 참고로 보면, Person.
이 반복되니까.)
그래서 찾아봤다. intellij 에서 auto-import 로 inner class 도 찾아서 import 로 박아주면 안될까.
원하는 모양은 이렇다.
import Game.Status;
...
if (game.getStatus() == Status.RUNNING) {...}
intellij 에서 아래와 같은 설정을 통해 inner class 에 대한 auto-import 도 활성화 해줄 수 있다.intellij 설정 > Editor > Code Style > Java > imports
에서 insert imports for inner classes
를 활성화 해주면 된다.
아래 링크에서 찾았는데, 댓글을 달아준 사람이 이런 얘기를 한다.
https://stackoverflow.com/questions/14477437/intellij-idea-how-to-enable-imports-for-inner-classes/14478159
inner class 의 참조를 외부에서 사용한다면, 이건 디자인 자체를 재검토해야 하지 않겠냐.
생각해보면, IDE 덕분에 파일을 잘게 쪼개도, 그걸 검색하거나 의미를 파악하는데 드는 시간과 비용은 크지 않다.
쉽게 연관 관계를 찾을 수 있고, 잘 정리된 패키지를 통해 의미를 추정해 볼 수도 있다.
정답이 없는 문제이긴 하지만, import 의 문제가 아닌 디자인의 문제로서 생각해봐야 할 것 같다는 답변자의 말에 나도 스스로를 돌아본다.
'dev' 카테고리의 다른 글
intellij 실행 옵션 변경하기 (0) | 2018.05.01 |
---|---|
텔레그램 챗봇 만들기 - 1. 챗봇 플랫폼 고르기 (0) | 2018.02.22 |
무료 클라우드 서버 살펴보기 - ncloud toastcloud aws (0) | 2018.02.18 |
gson TypeToken 제너릭 사용기 (0) | 2018.02.13 |
cygwin을 알아보자 (0) | 2018.02.13 |