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"라는 원칙을 실천하여 개발 과정에서 테스트를 쉬운 상태로 유지해야 한다.