-
아이템 25. 톱레벨 클래스는 한 파일에 하나만 담아라TL;DR
자바 컴파일러는 하나의 소스파일에 그러나 가독성 측면도 좋지않을 뿐만아니라, 심각한 위험을 감수해야한다. 하나의 소스파일에 여러 톱레벨 클래스를 선언하게 된다면 그 중 어느 것을 사용할지는 어떤 소스 파일을 먼저 컴파일 하냐에 따라 달라진다. 예제를 통해서 알아보자. public class Main{
public static void main(String[] args){
System.out.println(Utensil.NAME + Dessert.NAME);
}
}
class Utensil {
static final String NAME = "pan";
}
class Dessert {
static final String NAME= "cake";
}
class Utensil {
static final String NAME = "pot";
}
class Dessert {
static final String NAME= "pie";
} 동시에 컴파일 할 경우두개 같이 동시에 컴파일한다면 따로 컴파일을 할 경우
위 처럼 따로 컴파일 하는데 어느 것이 컴파일러에 먼저 순서가 가느냐에 따라서 동작이 달라진다. 따라서 컴파일 시점에서 문제가 생기기 때문에 조심해야할 문제다. 해결책
public class Test{
public static void main(String[] args){
System.out.println(Utensil.NAME + Dessert.NAME);
}
private static class Utensil {
static final String NAME = "pen";
}
private static class Dessert {
static final String NAME= "cake";
}
} 💡결론 : 톱레벨 클래스는 한 파일에 하나만 담으라! |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
정리감사합니다. 점점 아이템이 늘어날 수록 이전 아이템고 연관해서 생각해야할 것들이 많아지는 것 같습니다. ㅎㅎ |
Beta Was this translation helpful? Give feedback.
-
잘 봤습니다. SonarLint 같은 정적 코드 분석기를 이용하면 해당 아이템 내용을 교정할 수 있도록 가이드해주니 활용하면 좋을 것 같네요~ |
Beta Was this translation helpful? Give feedback.
잘 봤습니다. SonarLint 같은 정적 코드 분석기를 이용하면 해당 아이템 내용을 교정할 수 있도록 가이드해주니 활용하면 좋을 것 같네요~