1장 : 리팩터링 리팩터링 하기
의문점
- XP에서 스파이크
- 시작전 핵심기능 간단구현
- 레드 - 그린 - 리팩터 반복
- TDD 를 처리를 기술한 방법
- 자동화된 테스트
학습목표
- 리팩토링의 구성요소는?
- 일상 업무에 리팩토링 도입이란?
- 리팩토링에 있어 안전의 중요성이란?
키워드
- 리팩토링의 구성요소는 스킬,문화,도구 로 구성되어있다
- 제반 정의
- 좋은 코드? : 사람이 읽기 쉽고, 유지보수가 용이하며, 의도한대로 잘 작동하는 코드
- 리팩토링? : 기능을 변경하지않고, 코드의 가독성과 유지보수가 쉽도록 코드를 변경하는것
- 리팩토링의 이유
- 가독성 높이면 → 기능구현 시간 확보 (경제성)
- 유지보수가 용이 → 버그가 줄어들고 수정이 쉬워짐
- 생각하기 편하다 → 한번에 많은 것을 기억해야할수록 지침,
- 스킬 : 무엇을 리팩토링 할 것인가
- 코드스멜 : 코드가 나쁘다는것을 암시
- 코드스멜 예 : 함수는 한가지 작업을 수행해야한다 (but 한가지작업은 대체 무엇? → 모호)
- 규칙의 예 : 다섯 줄 제한 (코드스멜보다 간명함)
- 코드스멜 : 코드가 나쁘다는것을 암시
- 문화 : 리팩토링은 언제할까?
- 프로그래밍 문제해결 6단계 (탐색, 명세화, 구현, 테스트, 리팩토링, 전달)
- 5단계 리팩토링 : 규칙위반? → 규칙해당하는 리팩토링 패턴 찾기 → 지시에 따르기 → 컴파일 오류 수정
- 코드베이스 전체가 아닌 일상업무에 결합하는 방법 :
- 구현하기 전 :
우선 변경하기 쉽게 만든 후 변경하라 - 켄트백
- 구현하기 전 :
- 리팩토링 X (언제 리팩토링 하지말아야 할까?) : 스파이크, 폐기되기전 코드, 엄격한 성능요구사항 코드
- 프로그래밍 문제해결 6단계 (탐색, 명세화, 구현, 테스트, 리팩토링, 전달)
- 도구 : 안전한 리팩토링 방법
- 자동화된 테스트 외
- 상세하고 단계별 구조화된 래픽토링 패턴
- 버전관리
- 컴파일러
요약
- 리팩토링의 구성요소는?
- 리팩터링 대상을 식별하는 스킬, 리팩터링 단계를 명시적으로 가진 문화, 리팩터링을 돕는 도구의 조합
- 일상 업무에 리팩토링 도입이란?
- 켄트벡
- 리팩토링에 있어 안전의 중요성이란?
- 컴파일러와 타입으로 실수를 잡아내고,
- 정기적 실행으로 검증하기
- rollback 이 가능
- 자동차의 브레이크
나눔
+: 켄트벡
테스트가 전제에 깔려있어야 하는것을 기억하자
→ 코드변경 자체 즉 리팩토링이 스멜이 내포함 → 사이드이펙트 우려 상존함 → 안전하게 하기위해 테스트 해야함
→ 회귀테스트 방지 가능
+: 리팩토링 내성
→ 코드를 바꾸어도… →
블라디미르 단위테스트 참조
'cleanCode > FiveLinesOfCode' 카테고리의 다른 글
[FiveLinesOfCode] 6장: 유사한 코드 융합하기 (1) | 2023.10.29 |
---|---|
[FiveLinesOfCode] 5장 유사한 코드 융합하기 (1) | 2023.10.29 |
[FiveLinesOfCode] 4장 타입코드 처리하기 (1) | 2023.10.08 |
[FiveLinesOfCode] 3장 : 긴 코드 조각내기 (1) | 2023.10.03 |
[FiveLinesOfCode] 2장 : 리팩터링 깊게 들여다보기 (0) | 2023.10.03 |