Skip to content

Latest commit

 

History

History
30 lines (21 loc) · 1.26 KB

2..md

File metadata and controls

30 lines (21 loc) · 1.26 KB

2. 한 가지만 해라!

함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다.

평균값을 계산하는 다음의 함수를 고려해보자.

calcAverage(nums) {
  let sum = 0;
  for (let i of nums) {
    sum += nums[i]
  }
  return sum/nums.length
}

어떤가 위의 함수는 한가지 일을 하고 있는가? 그렇지 않다. 평균값을 구하는 함수 내에서 sum 값을 구하는 일도 하고 있기 때문이다. 다음과 같이 고쳐보자.

calcAverage(nums) {
    return calcSum(nums)/nums.length
}

이 함수는 확실히 한가지 일을 하고 있다. 어떤 함수가 한가지 일을 한다는 것은, 함수 내에서 추상화 수준이 하나인 단계만 수행하는 것을 의미한다.

함수가 한가지만 하는지 판단하는 방법이 하나 더 있다. 단순히 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는 셈이다.

C#에서 region 키워드와 같이 블럭을 나눌 수 있는 기능을 제공하는 언어들이 있다. 이런 키워드를 사용하여 함수 내에 섹션을 나눈다는 것은 한 함수에서 여러 작업을 한다는 증거다.