리팩터링 2판을 회사 팀 내 스터디로써 진행한다. 스터디에선 따로 책 내용을 정리를 하지 않고 주마다 정해진 분량까지 읽고 감상을 나눈다. 여기선 개인적으로 매 분량에 대한 정리와 짧은 감상을 올린다.
05 리팩터링 카탈로그 보는 법
이번부터는 내용 정리가 아닌 각 단원마다의 코멘트를 한다. 이전까지는 각 단원의 내용을 간단하게 정리했지만, 특히 이 5장의 경우는 내용이 앞으로의 남은 단원을 읽는 방법이기 때문에 크게 의미가 없다. 또 이번에 다룰 기초적인 리팩터링의 첫 4가지는 어려운 개념이 아니라 책에서 설명하는 방법과 예시에 대한 정리가 아닌 나의 코멘트 위주로 적는다. 후에 나오는 리팩터링 기법이 생소하면 다시 정리가 추가될 수 있다.
06 기본적인 리팩터링
•
이름 짓기
◦
6.1 함수 추출하기
◦
6.3 변수 추출하기
◦
이름 바꾸기
▪
6.5 함수 선언 바꾸기
▪
6.7 변수 선언 바꾸기
•
6.6 변수 캡슐화하기
•
6.8 매개변수 객체 만들기
•
고수준 모듈화; 이름 짓기는 기본적인 저수준 리팩터링
◦
6.9 여러 함수를 클래스로 묶기
◦
6.10 여러 함수를 변환 함수로 묶기
•
명확한 단계 구분 짓기
◦
6.11 단계 쪼개기
6.1 함수 추출하기
•
이름을 짓는 것 자체가 중요하다.
•
이름은 의도(목적, 무엇을) 하는지 나타내는게 중요하다.
◦
내용에 구현(어떻게)을 쓰자.
•
중첩 함수
◦
이름의 문맥을 제한하는 방법은 좋은거 같다.
◦
지역 변수의 참조는(변수의 유효 범위) 조심히 다뤄야 한다.
▪
이름이 겹친다거나…
•
값을 반환할 변수가 여러 개라면?
◦
실질적으로 중요한 문제 같다. 리팩터링하기 전의 코드는 묶여 있는 블록은 한 변수씩 처리하지 않고 이러고 있을 가능성이 크기 때문에
6.2 함수 인라인하기
•
구현을 그저 이름으로 감싼 것이라면 적용해도 될 것이다.
◦
e.g. moreThanFiveLateDeliveries : numberOfLateDeliveries > 5
6.3 변수 추출하기
•
이름이 의미 있는 문맥이 함수 안일 때 적용한다.
◦
문맥이 클래스라면 메소드로 추출한다.
•
적당히 쓰기 나름이지만 마틴은 6.1을 더 선호하는 것 같다.
6.4 변수 인라인하기
•
6.2의 변수 버전
느낀점
•
함수 추출하기를 중복 제거가 목적이라고 생각했어서 다른 관점으로 보인다.
•
중복 제거 관점에서..
◦
vue의 v-slot은 리팩터링 관점에서 좋은 것인가
◦
고차 함수 덩어리(가 크면 클 수록)를 넘기고 껍데기만 추출하는 느낌
◦
중복이 있다는 것은 그 문맥에서 이름으로 불릴만한 것인가
◦
vuetify와 같은 라이브러리 사용은 이름 짓기류의 리팩터링을 주저하게 만드는 느낌이 있다.
•
6.3은 함수에 비해 애매하고 보통 리뷰를 하면 6.4와의 대립이 더 많았던 거 같다.
◦
문맥적인 영역(scope)과 문법적인 영역은 다르고 앞의 것을 따르면 완전한 규칙이 있진 않을거 같다.
◦
vue 같은 프레임워크 사용 시 프레임워크가 제한하는 영역에서 함수보단 변수로써의 이름 사용을 더 유도하는 느낌이다.