9. 여러 함수를 클래스로 묶기
공통 데이터를 중심으로 긴밀하게 엮여 작동하는 함수 무리가 있으면 클래스로 묶는다.
클래스로 묶을 때의 장점은 클라이언트가 객체의 핵심 데이터를 변경할 수 있고, 파생 객체들을 일관되게 관리할 수 있다는 것이다.
*함수를 객체처럼 패턴
https://martinfowler.com/bliki/FunctionAsObject.html
*단일 접근 원칙
https://martinfowler.com/bliki/UniformAccessPrinciple.html
10. 여러 함수를 변환 함수로 묶기
변환 함수란 원본 데이터를 입력받아서 필요한 정보를 모두 도출한 뒤, 각각을 출력 데이터 객처 하나로 리턴하는 것이다.
공통 데이터를 다루는 함수 무리를 하나로 묶는다는 점에서 9번 기법과 목적은 같다. 두 기법 모두 도출 로직이 중복되는 것을 피하기 위해서 사용한다. 차이점은 원본 데이터가 코드 안에서 갱신될 때는 클래스로 묶는 편이 좋다는 것이다.
- 변환 함수 이름 짓기 규칙
enrich | 본질은 같고 부가 정보만 덧붙이는 변환 함수 |
transform | 형태를 변환시키는 변환 함수 |
11. 단계 쪼개기
모듈 하나에서 별개의 두 대상을 다루고 있는 코드가 있다면 각각 모듈을 나누는 것이 좋다.
세 개의 예시를 단계별로 설명하고 있기 때문에 설명이 길지만, 하나씩 따라가다보면 그리 어렵지 않다.
*험블 객체 패턴
https://martinfowler.com/books/meszaros.html
'Today I Learned' 카테고리의 다른 글
리팩터링 2판 챕터8 - 기능 이동 (0) | 2021.11.29 |
---|---|
리팩터링 2판 챕터7 - 캡슐화 (0) | 2021.11.24 |
리팩터링 2판 챕터6 - 기본적인 리팩터링(1) (0) | 2021.11.15 |
리팩터링 2판 챕터4 - 테스트 구축하기 (0) | 2021.11.14 |
리팩터링 2판 챕터3 - 코드에서 나는 악취 (0) | 2021.11.14 |