토픽 121 / 192·소프트웨어 표준과 법제도
리팩토링 기법 (Refactoring Techniques)
리팩토링 기법 (Refactoring Techniques)
소프트웨어의 외부 동작을 변경하지 않으면서 내부 구조를 개선하여 코드 품질, 가독성, 유지보수성을 향상시키는 체계적인 코드 변경 기법
목적: 코드 품질 향상, 기술 부채 해소, 가독성 개선, 유지보수 용이, 확장성 확보
특징: 동작 보존, 작은 단계, 테스트 동반, 지속적 개선
주요 리팩토링 기법
- •Extract Method: 긴 메서드에서 코드 블록을 별도 메서드로 추출
- •Inline Method: 단순한 메서드를 호출부에 직접 삽입
- •Rename: 의미 있는 이름으로 변수/메서드/클래스 변경
- •Extract Variable: 복잡한 표현식에 설명적 변수 도입
- •Move Method/Field: 적절한 클래스로 멤버 이동
- •Replace Conditional with Polymorphism: 조건문을 다형성으로 대체
- •Introduce Parameter Object: 관련 파라미터를 객체로 묶음
- •Replace Magic Number with Constant: 매직 넘버를 상수로 대체
리팩토링 전 필수 조건
- •충분한 테스트 커버리지 (안전망)
- •버전 관리 (작은 커밋)
- •동작 검증 (리팩토링 전후 테스트 통과)
Code Smell (리팩토링 대상 신호)
- •Long Method, Large Class, Duplicated Code
- •Feature Envy, Data Clumps, Primitive Obsession
- •Shotgun Surgery, Divergent Change
장점: 코드 품질 향상, 버그 감소, 이해도 증가, 변경 용이성
단점: 시간 투자, 회귀 위험(테스트 부족 시), 과도한 리팩토링
적용사례: 레거시 코드 개선, 코드 리뷰 피드백, 기능 추가 전 정리
기술요소: Extract/Inline, Rename, Move, Replace, IDE 리팩토링 도구
비교: 리팩토링(구조 개선) vs 리라이트(재작성) vs 최적화(성능 개선)
연관: 클린 코드, TDD, 기술 부채, Code Smell, 레거시 전환