오늘은 3.3<주석을 상수로 대체> 에 들어간다.
주석은 코드를 설명하는데 필요하다.
하지만 설명은 코드로 하는 것이 더 바람직하다.
주석을 사용하지 않고 상수로 변환할 수 있는데,
단위를 변환하는 코드를 예로 들면,
enum SmallDistanceUnit {
CENTIMETER,
INCH;
double getConversionRate(SmallDistanceUnit unit) {
if (this == unit) {
return 1; // 동등 변환률
}
if (this == CENTIMETER && unit == INCH) {
return 0.393701; // 1센티미터당 인치
} else {
return 2.54; // 1인치당 센티미터
}
}
}
주석을 통해 코드에 설명을 덧붙였고, 나쁘지 않은 방법이지만
코드 자체로 더 의미있게 만들 수 있다.
enum SmallDistanceUnit {
CENTIMETER,
INCH;
static final double INCH_IN_CENTIMETERS = 2.54;
static final double CENTIMETERS_IN_INCHES = 1 / INCH_IN_CENTIMETERS;
static final double IDENTITY = 1;
double getConversionRate(SmallDistanceUnit unit) {
if (this == unit) {
return IDENTITY;
}
if (this == CENTIMETER && unit == INCH) {
return CENTIMETERS_IN_INCHES;
} else {
return INCH_IN_CENTIMETERS;
}
}
}
이렇게 상수로 만들고 주석을 제거했다.
지은이는 이 과정을 '임베딩'이라고 표현했다.
Embedding이란:
사람이 쓰는 자연어를 기계가 이해하는 숫자형태로 바꾸는 것을 뜻한다.
상수의 장점은 이름으로 의미를 드러낸다는 점이다.
그러니 더 이상 주석으로 설명할 필요가 없고, 주석이 실제 코드로 변한 것이다.
지은이의 경험상 주석을 상수나 변수, 필드, 메서드 이름으로 넣을 수 있다면
망설이지 말고 넣을 것은 권장한다고 한다.
오늘의 코멘트: 상수와 친하지않았는데 주석 대신 상수를 사용하는 것에 메리트를 느꼈다.