리팩토링 스터디1
목표
리팩토링 스터디
리팩터링:예시 - chapter 1
1. 리팩터링이란?
리팩터링은 코드의 외부 동작은 그대로 유지한 채, 코드 구조를 개선하는 작업입니다. 마치 집을 리모델링하는 것처럼, 기존 기능은 그대로 유지하면서 내부 구조를 개선하는 것입니다.
2. 리팩터링이 필요한 이유
- 코드의 가독성 향상
- 버그 수정 용이성 증가
- 새로운 기능 추가가 쉬워짐
- 코드 재사용성 향상
- 유지보수 비용 감소
3. 주요 리팩터링 기법
3.1 변수 관련 리팩터링
변수 이름 바꾸기
- 명확한 이름으로 변경하는 것을 주저하지 않기
- IDE의 리팩터링 도구 활용 권장
임시 변수 처리
- 임시 변수는 질의 함수로 변경
- 값이 바뀌지 않는 변수는 인라인화
- 사용하는 변수는 바로 앞단에 위치시키기
3.2 함수 관련 리팩터링
반복문 쪼개기
- 기능별로 for문 분리
- 주의사항: 성능 영향 확인 필요
- 컴파일러 캐싱 기법으로 인한 성능 영향
- 실제 실행 환경에서 테스트 필요
문장 슬라이드
- 관련 코드를 가까이 배치
- 임시 변수를 질의 함수로 변경하기 쉽게 만듦
3.3 구조 개선 리팩터링
단계 쪼개기
- 계산 단계와 표현 단계 분리
- 각 단계별 책임 명확화
생성자를 팩터리 함수로 변경
- JavaScript의 생성자 제한 해결
- 서브클래스 인스턴스 반환 가능
조건부 로직을 다형성으로 변경
- 서브클래스별 로직 분리
- 슈퍼클래스는 추상 메서드만 정의
- 서브클래스에서 구체적 구현
3.4 데이터 처리 리팩터링
- 얕은 복사 활용
- 가변 데이터를 불변 데이터로 사용
- 부작용 방지
4. 리팩터링 진행 단계
중첩 함수 분리
- 여러 개의 독립적인 함수로 분리
- 상위 함수 변수 접근 가능
단계 쪼개기
- 계산 코드와 출력 코드 분리
- 각 단계의 책임 명확화
다형성 적용
- 계산 로직을 다형성으로 표현
- 확장성과 유지보수성 향상
5. 좋은 코드의 기준
- 수정하기 쉬운 코드
- 이해하기 쉬운 코드
- 재사용하기 쉬운 코드
- 테스트하기 쉬운 코드
6. 리팩터링 시 주의사항
- 테스트 코드 작성 필수
- 작은 단계로 나누어 진행
- 각 단계마다 테스트 실행
- 성능 영향 고려
레퍼런스
- 리팩터링2판