본문 바로가기

Today I Learned

리팩터링 2판 챕터6 - 기본적인 리팩터링(1)

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. 매개변수 객체 만들기

데이터 뭉치를 데이터 구조로 묶으면 데이터 사이의 관계가 명확해진다. 주로 클래스로 만드는 것을 권장하고 있는데, 동작까지 함께 묶기 좋기 때문이다.