아래는 마이클 C. 페더스의 레거시 코드 활용전략 20장을 읽고 정리한 내용입니다.
길고 복잡하게 구현된 로직이 있다면 그중 일부를 별도의 클래스로 추출할 수 있는지 생각해본다. 클래스 내부에서 서로 긴밀하게 연관된 인스턴스 변수와 메서드들이 있는지 살펴본다.
단일 책임의 원칙 (Single Responsibility Principle) 에서 말하는 것 처럼 하나의 클래스는 하나의 주 기능을 수행해야 한다. 해당 클래스가 어떤 일을 하는지 한 문장으로 요약해보자.
클래스 추출시 (1) 기존 클래스의 인터페이스를 바꾸고 클라이언트가 신규 클래스를 직접 호출하도록 변경하는 방법(“인터페이스 상의 분리”)와 (2) 기존 클래스의 인터페이스는 유지하되 기존 클래스가 신규 클래스를 내부적으로 사용하도록 변경하는 방법(“구현 상의 분리”)가 있다.
지나친 야망을 경계하자 (조금씩 테스트 루틴을 거쳐서 변경).