총 p.550
읽은 범위 : p.78까지
📚 오늘 TIL 3줄 요약
코드를 정리한들 새로운 기능이 생기는 것도 아니고 그저 코드가 더 깔끔해 보일 뿐이지 않은가, 굳이 긁어 부스럼 만들지 말라? (잘 돌아가는 코드는 손대는 게 아니다?)
6개월 후 해당 프로젝트는 망했다. 코드가 복잡해서 디버깅도 못하고 최소 성능 요건을 맞추는 것도 불가능해졌다. 거대한 기술부채는 결국 탈이 나기 마련이다.
리팩터링은 프로그램 수정을 작은 단계로 나눠 진행한다.
하나의 리팩터링이 문제가 없으면 변경사항을 로컬 버전관리 시스템에 커밋하기
git, mercurial처럼 개인 커밋 지원하는 시스템 사용하기
컴파일하고 테스트하고 커밋한다
임시 변수를 질의 함수로 바꾸기 (함수로 추출)
변수 인라인하기
for(let perf of invoice.perfermances){
const play = playFor(perf);=> 인라인된 변수는 제거
let thisAmount = amountFor(perf, playFor(perf));
// ~
}
지역변수부터 제거한다
적합한 이름으로 함수 선언명 수정하기
반복문을 쪼개고, 변수 초기화 문장을 옮기고, 함수 추출한다
각 단계 끝에선 항상 컴파일-테스트-커밋한다
계산 로직은 여러 개의 보조함수로 빼낸다. (중첩함수 구조로)
리팩토링과정에서 성능이 크게 떨어졌다면, 그 후에 성능 개선 작업이 필요하다. 하지만 리팩터링 덕분에 성능 개선도 효과적으로 개선할 수 있다.
반복문을 파이프라인으로 바꾸기
좋은 코드는 수정하기 쉬운 코드다
1장은 전부 예시로 설명해주기 때문에, 예시를 통해 리팩터링 방법에 대해서 감을 잡아야 하는데
각 단계를 쪼개는 것은 이해가 좀 간다.
하지만, 다형성의 class부분이 아직 감이 잡히지 않았다. 다시 읽어볼 것!!
그리고 코드를 재구성하는 모습에 있어서 내가 실제로 책처럼 능수능란하게 적용을 잘 할 수 있을지에 대한 생각이 들었다. 재구성이 아직 나에겐 좀 어렵게 다가왔다.
또 읽어도 모르는 것들이 나와서 익숙하지 않은 것에 대한 훈련이 필요하다고 느꼈다...
p.64~ 다형성 활용해 재구성하기 class부분 예시!!!!
팩토리 함수
: new
키워드 없는 객체를 리턴하는 함수
재구성 잘하는 법? 꼬리에 꼬리를 물고 나가는 듯한 느낌?