리팩토링 스터디1

목표

리팩토링 스터디

리팩터링:예시 - chapter 1

1. 리팩터링이란?

리팩터링은 코드의 외부 동작은 그대로 유지한 채, 코드 구조를 개선하는 작업입니다. 마치 집을 리모델링하는 것처럼, 기존 기능은 그대로 유지하면서 내부 구조를 개선하는 것입니다.

2. 리팩터링이 필요한 이유

  • 코드의 가독성 향상
  • 버그 수정 용이성 증가
  • 새로운 기능 추가가 쉬워짐
  • 코드 재사용성 향상
  • 유지보수 비용 감소

3. 주요 리팩터링 기법

3.1 변수 관련 리팩터링

  • 변수 이름 바꾸기

    • 명확한 이름으로 변경하는 것을 주저하지 않기
    • IDE의 리팩터링 도구 활용 권장
  • 임시 변수 처리

    • 임시 변수는 질의 함수로 변경
    • 값이 바뀌지 않는 변수는 인라인화
    • 사용하는 변수는 바로 앞단에 위치시키기

3.2 함수 관련 리팩터링

  • 반복문 쪼개기

    • 기능별로 for문 분리
    • 주의사항: 성능 영향 확인 필요
      • 컴파일러 캐싱 기법으로 인한 성능 영향
      • 실제 실행 환경에서 테스트 필요
  • 문장 슬라이드

    • 관련 코드를 가까이 배치
    • 임시 변수를 질의 함수로 변경하기 쉽게 만듦

3.3 구조 개선 리팩터링

  • 단계 쪼개기

    • 계산 단계와 표현 단계 분리
    • 각 단계별 책임 명확화
  • 생성자를 팩터리 함수로 변경

    • JavaScript의 생성자 제한 해결
    • 서브클래스 인스턴스 반환 가능
  • 조건부 로직을 다형성으로 변경

    • 서브클래스별 로직 분리
    • 슈퍼클래스는 추상 메서드만 정의
    • 서브클래스에서 구체적 구현

3.4 데이터 처리 리팩터링

  • 얕은 복사 활용
    • 가변 데이터를 불변 데이터로 사용
    • 부작용 방지

4. 리팩터링 진행 단계

  1. 중첩 함수 분리

    • 여러 개의 독립적인 함수로 분리
    • 상위 함수 변수 접근 가능
  2. 단계 쪼개기

    • 계산 코드와 출력 코드 분리
    • 각 단계의 책임 명확화
  3. 다형성 적용

    • 계산 로직을 다형성으로 표현
    • 확장성과 유지보수성 향상

5. 좋은 코드의 기준

  • 수정하기 쉬운 코드
  • 이해하기 쉬운 코드
  • 재사용하기 쉬운 코드
  • 테스트하기 쉬운 코드

6. 리팩터링 시 주의사항

  • 테스트 코드 작성 필수
  • 작은 단계로 나누어 진행
  • 각 단계마다 테스트 실행
  • 성능 영향 고려

레퍼런스

  • 리팩터링2판