ToMethodObject 리팩토링 방법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

  • 소프트웨어 개발자: 특히 리팩토링과 테스트 작성에 관심 있는 중급 이상 개발자에게 유용
  • 난이도: 중간 수준, 테스트 자동화와 리팩토링 기술을 이해한 개발자에게 적합

핵심 요약

  • 테스트 가능한 코드는 좋은 코드이며, 리팩토링은 테스트 작성의 용이성을 높인다.
  • "Replace Method with Method Object" 리팩토링 패턴은 복잡한 메서드를 테스트하기 쉬운 별도의 클래스로 분리하는 방법이다.
  • ToMethodObject 라는 Visual Studio 확장 도구를 사용하면 리팩토링을 자동화하여 테스트 작성의 복잡도를 줄일 수 있다.

섹션별 세부 요약

1. 테스트 작성의 어려움

  • 복잡한 의존성이나 private 메서드가 있는 경우 테스트 작성에 어려움이 발생한다.
  • 의존성 중 일부는 테스트와 관련이 없어 불필요한 설정을 필요로 한다.

2. 테스트 가능한 코드의 중요성

  • 테스트 가능한 설계는 코드 품질을 높이고, 설계 개선을 가능하게 한다.
  • Michael Feathers의 "Fixing Design with Tests" 영상에서 테스트 어려움의 원인과 해결 방안을 설명하고 있다.

3. "Replace Method with Method Object" 리팩토링

  • 원하는 메서드를 static 메서드로 분리하여 테스트 가능하게 만든다.
  • 이 패턴은 복잡한 로직을 독립적인 클래스로 이동하여 테스트를 간결하게 만든다.

4. ToMethodObject 도구 사용 예시

  • TripService 클래스의 friend 체크 로직을 FriendCheck 메서드로 분리하고, FriendChecker 클래스로 리팩토링한다.
  • 이 도구는 메서드 이름을 기반으로 새로운 클래스 이름을 자동 생성한다.
  • 리팩토링 후, 원본 메서드는 FriendChecker 클래스를 호출하도록 자동 업데이트된다.

결론

  • ToMethodObject 도구를 활용하면 복잡한 메서드를 테스트하기 쉬운 클래스로 리팩토링할 수 있다.
  • 테스트 작성의 어려움을 줄이고, 코드의 가독성과 유지보수성을 향상시키는 데 도움이 된다.
  • "Make the test easy to write"라는 원칙을 실천하여 개발 과정에서 테스트를 쉬운 상태로 유지해야 한다.