리팩터링 사이클

mhlee·2021년 4월 22일
0

리팩터링 워크북 2장 "리팩터링 사이클" 정리 입니다.

리팩터링이란 무엇인가?

리팩터링은 기존 코드의 디자인을 안전하게 개선하는 기술이다. 이 말에는 다음과 같은 의미가 내포되어 있다.

  • 시스템 내에서 발생하는 변경 사항이 모두 리팩터링에 포함되는것은 아니다.

    리팩터링이 새로운 코드를 추가하는 과정의 일부는 될 수 있지만, 새로운 기능을 추가하기 위한 과정은 아니다.

  • 리팩터링이란 처음부터 다시 작성하는 것이 아니다.

    리팩터링은 기존 코드에 있는 지식을 보존한다.

  • 코드를 개선하기 위한 개조라고 해서 모두 리팩터링은 아니다.

    리팩터링은 안전한 변형을 위해 노력한다는 점에서 일반적인 코드 개선과 구별된다.

  • 리팩터링은 선행(up-front)디자인과 창발(emergent) 디자인 사이에서 균형점을 변경한다.
  • 리팩터링은 크기가 작을 수도 있고 클 수도 있다.

    이상적으로는, 큰 리팩터링이 거의 필요하지 않을 정도로 작은 리팩터링을 '무자비하게' 사용하는 것이 좋다.

리팩터링 사이클

1. 작업 프로그램을 시작한다.

2. 냄새가 남아 있는 동안 다음을 수행한다.

  • 가장 나쁜 냄새를 골라낸다.

  • 그 냄새를 겨냥할 리팩터링을 선택한다.

  • 선택한 리팩터링을 적용한다.

전체 프로세스중 가장 까다로운 부분은 냄새를 식별하는 것이다.

단순한 디자인

1. 모든 테스트를 실행할 수 있어야 한다.

2. 중복된 로직이 없어야 한다. 병렬 클래스 계층구조와 같은 숨은 중복에 주의해야 한다.

3. 프로그래머들에게 중요한 모든 의도를 알려줄 수 있어야 한다.

4. 클래스와 메서드는 가능한 적어야 한다.

profile
삽질하는 개발자

0개의 댓글