IT/Programming
<Effective Java> RULE 19 인터페이스는 자료형을 정의할 때만 사용하라
Thnk
2023. 4. 27. 09:43
반응형
상수 인터페이스
interface PhysicalConstants{
static final double AVOGADROS_NUMBER = 6.02214199e23;
static final double BOLTZMANN_CONSTANT = 1.3806503e-23;
static final double ELECTRON_MASS = 9.10938188e-31;
}
상수 인터페이스는 잘못 사용한 것!
- 클래스가 어떤 상수를 어떻게 사용하느냐 하는것은 구현의 세부사항이다.
- 상수 정의를 인터페이스에 포함시키면 구현세부사항이 클래스의 공개 API에 스며들게 된다.
- 하위 클래스에도 인터페이스의 상수들로 오염된다.
- 상수 유틸리티 클래스를 사용하도록 한다.
상수 유틸리티 클래스
class PhysicalConstansNew{
private PhysicalConstansNew() {}
static final double AVOGADROS_NUMBER = 6.02214199e23;
static final double BOLTZMANN_CONSTANT = 1.3806503e-23;
static final double ELECTRON_MASS = 9.10938188e-31;
}
public class Rule19 {
public static void main(String[] args) {
double hello = PhysicalConstansNew.AVOGADROS_NUMBER;
}
}
import static Rule19.PhysicalConstansNew.*;
...
public class Rule19 {
public static void main(String[] args) {
double hello = AVOGADROS_NUMBER;
}
}
반응형