리팩토링(Refactoring)
SW설계리팩토링
읽는데 2분 소요
처음 쓰여진 날: 2026-04-29
마지막 수정일: 2026-04-29
조회수: —
요약
정처기 실기에서 출제되는 리팩토링(Refactoring)의 정의, 목적, 대표 기법(이름 변경·메서드 추출 등)과 코드 스멜을 정리합니다.
리팩토링이란? 쌩기초
**리팩토링(Refactoring)**은 소프트웨어의 외부 동작은 변경하지 않으면서 내부 구조를 개선하여 가독성·유지보수성·확장성을 높이는 작업입니다.
- 결과(외부 동작)는 그대로
- 내부 코드 구조만 다듬음
- 동작이 바뀌면 그건 리팩토링이 아닌 기능 변경
리팩토링 목적 기초
| 목적 | 설명 |
|---|---|
| 가독성 향상 | 다른 사람이(또는 미래의 내가) 코드를 더 빨리 이해 |
| 유지보수성 향상 | 변경·확장이 쉬워짐 |
| 버그 발견 | 구조를 정리하다 숨은 버그를 발견 |
| 설계 개선 | 시간이 흘러 어색해진 설계를 다듬음 |
대표 리팩토링 기법 기초
| 기법 | 의미 |
|---|---|
| 이름 변경(Rename) | 변수·함수·클래스 이름을 의도가 드러나게 변경 |
| 메서드 추출(Extract Method) | 긴 함수에서 일부 로직을 별도 함수로 분리 |
| 메서드 인라인(Inline Method) | 짧고 단순한 함수를 호출부에 펼침 |
| 클래스 추출(Extract Class) | 너무 많은 책임을 가진 클래스를 분리 |
| 매직 넘버 제거 | 의미 없는 숫자 리터럴을 상수로 추출 |
코드 스멜 심화
리팩토링이 필요한 신호를 코드 스멜(Code Smell) 이라고 합니다. 대표적인 예시는 다음과 같습니다.
- 중복된 코드(Duplicated Code)
- 너무 긴 함수(Long Method)
- 큰 클래스(Large Class)
- 너무 많은 매개변수(Long Parameter List)
- 의미 없는 이름(Mysterious Name)
시험 포인트
'외부 동작은 변경하지 않고 내부 구조 개선' 키워드만 보면 정답은 리팩토링입니다.