210307_B책_주석을 유틸리티 메서드로 대체

정재현·2021년 3월 7일
0

TIL2

목록 보기
7/79

오늘도 어제에 이어서 주석에 관련한 챕터를 진행한다.
3.4<주석을 유틸리티 메서드로 대체>
어제는 주석을 상수로 대체했는데, 오늘은 유틸리티 메서드로 대체해본다.

만약 주석을 상수로 대체했는데 코드가 더 복잡해지면 어떡할까?
모든 값이 고정된 값이 아니니깐 말이다.

예를 들어 특정 메서드가 이런 return 값을 가진다고 했을 때,

// 정수 백분율을 반올림
return Math.toIntExact(Math.round(averageFuel * 100));

우리가 이 코드를 봤을 때 바로 파악할 수 있는 이유는 주석이 있기때문이다.
앞 챕터를 진행했을 때 주석을 사용하지 않고 다른 방법으로 대체를 해왔는데,

int roundedToPercent = Math.toIntExact(Math.round(averageFuel * 100));
return roundedToPercent;

명명된 변수를 생성함으로써 코드는 명확해졌고 주석은 제거되었다.
하지만 메서드에 추가한 변수가 꽤 불필요하다. 더 나아질 수 있을까?

...

  return roundToIntegerPercent(averageFuel);
  }
  
  static int roundToIntegerPercent(double value) {
   return Math.toIntExact(Math.round(averageFuel * 100));
  }
}

이렇게 주석이나 변수를 추가하는 방법보다 유틸리티 메서드를 이용할 때 몇가지 장점이 있다.

1. 코드가 무엇을 하는지 이름만으로 설명할 수 있으니 메서드에서 주석을 제거할 수 있다.
    변수 이름에서 얻을 수 있는 장점과 같다.
2. 첫번째 메서드에 줄을 추가하지 않아도 된다. 대신 메서드가 두개로 늘었으나 각 메서드가 더 짧아지니
    각각 이해하기가 더 쉽다.
3. 다른 메서드에서 생성한 메서드를 재사용할 수 있다. 지금 당장은 쓰일 일이 없더라도 이러한 식으로
    코드를 조금씩 모듈화하게 된다.
4. 메서드에 계층 구조가 생겼다. 상위 계층 메서드의 이해도가 개선될 수 있다.

유틸리티 메서드를 사용함으로써 코드가 더 모듈화되고 추상화 수준도 좋아졌다.

오늘의 코멘트: 주석 하나 제거하는데 이렇게 많은 방법과 장점이 있다니..

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

0개의 댓글