JS로 되어있는 리펙터링 2판을 읽으며 내용을 요약해 정리한다.
리팩터링 규칙 및 방향성
- 항상 코드베이스를 작업하기 전보다 더 건강하게 고친다.
- 좋은 코드를 가늠화는 확실한 방법음
얼마나 수정하기 쉬운가
이다. - 단계를 잘 나누어 리팩토링 한 후, 매 단계마다 컴파일해서 작동되는 상태인지 확인한다.
Chapter 01 리팩터링 : 첫번째 예시
1단계. 구조잡기
- 하나의 리팩터링을 문제없이 끝낼 때마다 커밋한다.
- 그래야 중간간에 문제가 생기더라도 이전의 정상 상태로 쉽게 돌아갈 수 있다.
- 하나의 함수는 하나의 역할을 부여한다. ( 함수 쪼개기 )
- 변수의 이름을 명확하게 명명한다.
- JS와 같은 동적 타입언어를 사용할 때는 타입이 드러나게 작성하면 좋다. ( 예를들어, 접두어에 타입이름을 적는것 )
- 매개변수의 역할이 뚜렷하지 않을 때는 부정관사(a/an)을 붙인다.
- 함수의 반환값에는
result
라는 이름을 사용한다.- 이렇게 하면 그 변수의 역할을 쉽게 알 수 있다.
- 임시 변수를 질의 함수로 바꿔라
- 임시로 생성된 변수들을 함수로 추출해내어 리턴값을 받는것을 권장한다.
- 임시 변수 ( 지역변수 )를 제거하면 추출 작업이 훨씬 쉬워진다. «««< HEAD:_posts/2022-01-07-리펙터링 2판(책 리뷰).md
- 따라서, 추출작업 전에는 지역 변수부터 제거하는것이 좋다.
-
조건부 로직을 다형성으로 바꾸기
- 따라서, 추출작업 전에는 지역 변수부터 제거하는것이 좋다. ( 선언한 변수를 인라인화 한다. )
- 조건부 로직을 다형성으로 바꾸기 ( 새로운 케이스가 추가되거나 변경될때 수정 및 추가해야할 코드가 적어진다. )
Chapter 02 리팩터링 원칙
- 리팩터링의 목적은 코드를 이해하고 수정하기 쉽게 만드는 것이다. 리팩터링은 성능 최적화는 목적이 다르기 때문에 리팩터링 후 성능이 좋아질수도, 나빠질수도 있다.
- 기능추가와 리팩터링의 두 모자를 자주 바꿔쓰며 작동되며 이해하기 좋은 코드를 작성한다.]
- 리팩터링을 하는 이유는 다음과 같다.
- 리팩터링하면 소프트웨어 설계가 좋아진다.
- 아키텍쳐를 충분히 이해하지 못한 채 단기 목표만을 위해 코드를 수정하면 기반 구조가 무너지기 쉽다.
- 따라서 규칙적인 리팩터링은 코드의 구조를 지탱해주는 역할을 한다.
- 리팩터링하면 소프트웨어를 이해하기 쉬워진다.
- 리팩터링하면 버그를 쉽게 찾을 수 있다.
“난 뛰어난 프로그래머가 아니에요. 단지 뛰어난 습관을 지닌 괜찮은 프로그래머일 뿐이에요.” - 켄트 벡
- 리팩터링하면 프로그래밍 속도를 높일 수 있다.
- 내부 품질이 뛰어난 코드베이스는 새 기능 구축을 돕는 견고한 토대가 된다.
- 따라서 리팩터링하면 속도가 늦어질 거라는 오해가 있지만, 코드베이스를 잘 짜두면 새로운 기능을 추가하는데 시간과 비용이 훨씬 적게 들어간다.
- 리팩터링하면 소프트웨어 설계가 좋아진다.
- 리팩터링은 같은 코드가 3번 반복되면 수행한다. ( 3의 법칙 )