210306_B책_주석을 상수로 대체

정재현·2021년 3월 6일
0

TIL2

목록 보기
6/79

오늘은 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이란:
사람이 쓰는 자연어를 기계가 이해하는 숫자형태로 바꾸는 것을 뜻한다.

상수의 장점은 이름으로 의미를 드러낸다는 점이다.
그러니 더 이상 주석으로 설명할 필요가 없고, 주석이 실제 코드로 변한 것이다.
지은이의 경험상 주석을 상수나 변수, 필드, 메서드 이름으로 넣을 수 있다면
망설이지 말고 넣을 것은 권장한다고 한다.

오늘의 코멘트: 상수와 친하지않았는데 주석 대신 상수를 사용하는 것에 메리트를 느꼈다.

profile
"돈받고 일하면 프로다"

0개의 댓글