본문 바로가기
도서/파이브 라인스 오브 코드

1부- 5장. 유사한 코드 융합하기(단계 3/4)

by 패쓰킴 2023. 10. 4.
728x90
< 코드개선 4단계 >

1. 긴 함수 조각내기
2. 타입 코드 처리
3. 유사 코드 통합
4. 데이터 보호

 

5.4 클래스 간의 코드 통합

어떤 동작에 따라 클래스를 분리한다. 이것을 전략 패턴이라 하는데 예를 들어, 지도에서 출도착지를 설정하고 수단은 어떤것을 선택할건지에 따라 클래스를 나눈다. 대중교통 클래스, 자동차 클래스, 도보 클래스 처럼 동작별로 나누게 된다.

이러한 패턴을 이용하여 발생하는 클래스 간의 관계를 다이어그램으로 표현할 수 있는데 흔히 UML을 사용한다. 

 

전략 패턴이 도입 되면서 상태 패턴이라는 개념도 알아야 하는데, 상태 패턴이란 객체의 상태에 따라 클래스를 분리하는 것을 의미 한다. 예를 들어, 컴퓨터 전원 인터페이스가 있다면 이 인터페이스를 구현 하는 on 클래스, off 클래스와 같이 전원의 상태에 대해 표현하는 클래스를 생성하여 사용하는 패턴을 말한다. 

 

전략패턴
인스턴스 생성 후, 상태가 거의 바뀌지 않는 경우 사용
-> 생성 시, 비슷하면서 조금씩 다른 행동을 묶고 싶을 때 사용

상태패턴
인스턴스 생성 후, 상태가 빈번하게 바뀌는 경우 사용
-> if-else 조건문이 너무 많이 들어가 지저분해 보일 때 사용

 

구현체가 하나뿐인 인터페이스를 만들지 말 것

인터페이스를 구현하는 클래스가 하나밖에 없는 경우에는 오히려 가독성에 방해되므로 좋지 않다

구현에서 인터페이스 추출

클래스의 인터페이스로의 리팩터링이 필요할 때 인터페이스를 생성하여 변형 시키는 것이 유용하다. 

 

참고:

https://i-colours-u.tistory.com/41

https://sothoughtful.dev/posts/strategy/

728x90

댓글