5장은 나머지 뒷 장을 읽는 방법을 소개하는 안내서와 같다.
6~12장에서 설명할 리팩터링 기법을 설명하는 형식을 기술해놓았다.
각 기법마다 이름, 개요, 배경, 절차, 예시 순으로 설명하겠다고 한다.
6장은 기본적인 리팩터링에 대해서 설명하고 있다.
책 본문에 나와있는 예시를 참고하면 이해가 쉬운데, 각 기법을 간단히 정리해봤다.
1. 함수 추출하기 (↔️ 함수 인라인하기)
코드를 언제 독립된 함수로 만드는가? 두 번 이상 사용될 코드에? 아니다. 목적과 구현을 분리해서 코드를 독립된 함수로 만드는 것이다. 함수를 짧게 많이 만들면 호출이 많아질까봐 걱정할 필요는 없다. 함수가 짧으면 캐싱하기가 더 쉬워서 컴파일러가 최적화될 수 있다.
2. 함수 인라인하기 (↔️ 함수 추출하기)
함수의 이름은 목적이 분명히 드러나고 짤막해야한다. 때때로 함수 본문이 이름만큼 명확할 때도 있다. 그럴때 함수를 인라인한다. 간접 호출이 너무 과해도 인라인해야한다.
*인라인 : 함수 본문 안에 끼워 넣기
*간접 호출(indirection) : 직접적으로 부르지 않고 다음과 같이 호출하는 것을 말한다. 함수 이름 뒤에 ()가 빠진다.
someButton.addEventListener('click', hello);
참고 ) https://academind.com/tutorials/function-bind-event-execution
3. 변수 추출하기 (↔️ 변수 인라인하기)
표현식이 복잡해서 이해하기 어려울 때, 지역 변수를 활용해서 표현식을 쪼개 관리하자! 가독성이 좋아진다. 변수를 추가하면 디버깅에도 도움이 된다.
4. 변수 인라인하기 (↔️ 변수 추출하기)
변수를 함수로 만드는 것이 크게 의미가 없다면 인라인하자.
5. 함수 선언 바꾸기 (↔️ 함수 이름 바꾸기)
함수는 프로그램을 작은 부분으로 나누는 주된 수단이다. 함수를 선언하는 것은 시스템의 구성요소를 연결하는 연결부와 같다. 이때, 연결부에서 가장 중요한 것은 함수의 이름이다.
함수의 이름을 보고 무슨 일을 하는지 알 수 없다면 함수 선언 바꾸기를 고려해보자.
6. 변수 캡슐화하기
접근할 수 있는 범위가 넒은 데이터를 옮길 때는 데이터를 캡슐화하는 것이 좋다.
7. 변수 이름 바꾸기
명확한 프로그래밍의 핵심을 이름짓기라고 다시 한 번 말하고 있다. 함수 밖에서도 참조할 수 있는 변수라면 '변수 캡슐화하기' 기법을 사용하자.
8. 매개변수 객체 만들기
데이터 뭉치를 데이터 구조로 묶으면 데이터 사이의 관계가 명확해진다. 주로 클래스로 만드는 것을 권장하고 있는데, 동작까지 함께 묶기 좋기 때문이다.
'Today I Learned' 카테고리의 다른 글
리팩터링 2판 챕터7 - 캡슐화 (0) | 2021.11.24 |
---|---|
리팩터링 2판 챕터6 - 기본적인 리팩터링(2) (0) | 2021.11.21 |
리팩터링 2판 챕터4 - 테스트 구축하기 (0) | 2021.11.14 |
리팩터링 2판 챕터3 - 코드에서 나는 악취 (0) | 2021.11.14 |
리팩터링 2판 챕터2 - 리팩터링 원칙 (0) | 2021.11.07 |