14. 리팩터링 - 기존의 코드를 성장시키는 기술

내용


리팩터링의 흐름

  • 리팩터링?

    • 실질적인 동작은 유지하면서, 구조만 정리하는 작업

    • 실질적인 동작이 바뀌지 않았음을 보장해야한다.

      • 보통 테스트를 통해 보장하려고함 (e.g. 단위 테스트)

  • 논리 부정 연산자! 을 개선

    • !customer.isEnabled() -> customer.isDisable()

  • 목적을 나타내는 메서드를 사용하자

    • 특정 로직을의 목적을 나타내는 메서드를 사용하자

    • possessionPoint.amount < comic.currentPuchasePoint.amount 대신에 isShortOfPoint() 포인트 부족 여부를 판단하는 메서드로 리팩터링..

단위 테스트로 리팩터링 중 실수 방지하기

  • 일단 테스트를 실패 시킨다.

    • 코드 개선하고,

    • 테스트 성공시킨다.

불필요한 사양을 이해하기 위한 분석 방법

IDE 의 리팩터링 기능

  • Refactor -> Rename

  • Refactor -> Extract Method

리팩터링 시 주의 사항

  • 기능 추가와 리팩터링 동시에 하지 말기

    • 둘 중 한쪽에만 집중하자.

    • 둘다 진행하다가 둘다 달성 못할 수 도 있음.

  • 작은 단계로 실시하기

    • small step, small commit

  • 불필요한 사양을 제거 고려하기

    • 사용하지 않는 부분이라면 제거 고려하자

  • 동적 언어는 정적언어에 비해 리팩터링 하기 힘들다.

정리


  • 리팩터링 할 때, 단위 테스트 필수

  • 리팩터링과 기능 추가를 동시에 진행하지는 말자

  • 가독성이 최우선이다.

참고


  • https://product.kyobobook.co.kr/detail/S000202521361

Last updated

Was this helpful?