리팩터링의 정의

리팩터링하는 이유

  1. 소프트웨어 설계가 좋아진다.
  2. 소프트웨어를 이해하기 쉬워진다.
  3. 버그를 쉽게 찾을 수 있다.
  4. 프로그래밍 속도를 높일 수 있다.
    1. 내부 품질이 뛰어난 코드베이스는 새 기능 구축을 돕는 견고한 토대가 됨
    2. 설계 지구력 가설: 내부 설계에 심혈을 기울이면 소프웨어의 지구력이 높아져서 빠르게 개발할 수 있는 상태를 더 오래 지속할 수 있다

언제 리팩터링을 해야 할까?

  1. 준비를 위한 리팩터링: 기능을 쉽게 추가하게 만들기
    1. 함수 매개변수화 하기
    2. 오류를 일으키는 코드들 한 곳으로 합치기
    3. 질의 코드에 섞여 있는 갱신 로직 분리
  2. 이해를 위한 리팩터링: 코드를 이해하기 쉽게 만들기
    1. 코드의 의도가 더 명확하게 드러나도록 리팩터링할 여지는 없는지 찾아보기
    2. 리팩터링하면 머리로 이해한 것을 코드에 옮겨 담을 수 있다
  3. 쓰레기 줍기 리팩터링
    1. 비효율적으로 처리하는 모습을 발견할 때, 간단히 수정할 수 있는 것은 즉시 고치고 시간이 걸리는 일은 짦은 메모를 남긴 후 하던 일을 끝내고 나서 처리하는데 이것이 이해를 위한 리팩터링의 변형인 쓰레기 줍기 리팩터링이다

리팩터링 시 고려할 문제

  1. 새 기능 개발 속도 저하
    1. 리팩터링의 궁극적인 목적은 개발 속도를 높여서, 더 적은 노력으로 더 많은 가치를 창출하는 것
  2. 코드 소유권