프로그램이 새로운 기능을 추가하기 편한 구조라 아니라면,

기능을 추가하기 쉬운 현태로 리팩터링 하고 나서 원하는 기능을 추가한다.

1.4 statement() 함수 쪼개기


함수 쪼개기 원칙

  1. 값이 변하지 않는 변수는 매개변수로 전달한다.
  2. 함수 안에서 바뀌는 조심히 다뤄야 한다.
    • 변수 초기화 고려
    • 반환 값 사용여부에 대한 고려

[별도 함수를 빼냈을 때 유효범위를 벗어나는 변수]

→ 새 함수에서는 사용할 수 없는 변수가 있는지 확인한다.

⇒ 새 함수에서도 필요하지만 값을 변경하지 않기 때문에 매개변수로 전달한다.

⇒ 함수 안에서 값이 바뀌는데 이런 변수는 조심해서 다뤄야한다.

함수 추출하기 (SIMPLE VERSION)

  1. 값이 변하지 않는 변수는 매개변수로 전달한다.
  2. 함수내에 변수를 초기화하는 코드를 작성한다.

Insight

  1. ✨긴 함수를 리팩터링 할 떄는 전체 동작을 각각 부분으로 나눌 수 있는 지점을 찾는다.

    (ex) swtich

  2. 코드 조각을 별도 함수로 추출한다

  3. 별도 함수로 뺏을 때, 유효범위를 벗어나는 변수 유무를 확인한다.

  4. ✨리팩토링은 조금씩 변경하고 테스트하여, 피드백 주기를 짧게 가져감으로서 실수하더라도 버그를 쉽게 잡도록 한다.

  5. 추출 함수코드에서 명확하게 표현할 수 있는 방법을 찾는다.

    (ex) 명확한 변수명

    (tip) 매개변수의 역할이 뚜렷하지 않을 떄는 부정관사(a/an)을 붙인다.

  6. 계산 가능한 매개변수는 임시변수를 질의함수로 바꾸기를 통해 (7.4장) 리팩토링 할 수 있다.

  7. 지역 변수를 제거하여 얻는 큰 장점은 추출 작업이 쉬워진다는 것이다.

→ 유효 범위를 신경 쓸 대상이 줄어든다.