1장 리팩터링 리팩터링하기
Intro
- 코드스멜 : 심오한 오해를 일으킬 가능성이 있는 프로그램 소스코드의 특징
✔ 저자가 코드스멜이라는 용어를 자주 사용하는데 안 좋은 코드를 의미한다고 받아드림.
- 리팩터링 : 스킬+문화+도구
✔ 리팩터링은 단순히 코드를 어떻게 예쁘게 만드냐.. 로만 생각했는데 문화와 도구까지 고민한 점이 인상깊었음.
✔ 문화 : 리팩터링에 시간을 들이는 것을 권장하는 문화와 절차가 필요
✔ 도구 : 우리가 한 리팩토링이 안전한지를 보장하는 무언가(tool)
1.1 리팩터링이란 무엇인가?
기억해두고 싶은 내용
💡리팩토링을 해야하는 이유
- 코드를 더 빠르게 하기위해
- 더 작은 코드를 만들기 위해
- 코드를 더 일반적이거나 재 사용가능하게 하기 위해
- 코드의 가독성을 높이고 유지보수를 용이하게 하기 위해
좋은코드
사람이 읽기 쉽고 / 유지보수가 용이하고 / 의도한대로 동작
리팩터링의 정의
기능을 변경하지 않고 / 가독성 + 유지보수가 쉽도록 / 코드를 변경하는 것
1.2 스킬 : 무엇을 리팩터링 할 것인가
- 주니어때는 코드스멜을 직감으로 알아채지만 이 책과, 내 경험, 좋았던 코드들을 보고 나와 팀의 용어와 기준을 만들어서해보면 되겠다! → 리팩토링의 기준을 만들어 가면 좋음
1.3 문화 : 리팩터링은 언제할까
- 탐색 → 명세화 → 구현 → 테스트 → 리팩터링 → 전달
✔ 메서드가 규칙을 위반했는지 보고 해당 규칙에 맞는 리팩토링을 찾아 수정하기!
레거시 시스템에서 하려면?
- 우선 새 코드를 쉽게 추가할 수 있게하는 리팩토링부터!
언제 하지말까
- 스파이크코드(한번만 실행하고 안쓰는거)
- 폐기전 유지보수 모드
- 임베디드, 게임물리엔진 st 엄격한 요구사항이 있는 코드
✔ 그 외에도 각자 언제 안하면 좋을지 생각이 궁금!
1.4 도구 : (안전한) 리팩터링 방법
- 상세하고 단계별 구조화 된 리팩터링 패턴
- 버전관리(git)
- 컴파일러 / IDE