Refactoring
리팩토링(refactoring)은 소프트웨어 공학에서 '결과의 변경 없이 코드의 구조를 재조정함'을 뜻합니다. 주로 가독성을 높이고 유지보수를 편하게 하기위함 이며, 직접적인 버그 수정이나 기능 추가가 목적은 아니지만, 간접적으로 영향을 미칠 수가 있습니다. 사용자가 보는 외부 화면은 그대로 두면서 내부 논리나 구조를 바꾸고 개선하는 유지보수 행위에 가깝습니다.
- 가독성, 유지보수성
리팩토링의 주요 목표는 가독성과 유지보수성을 개선하는 것이며, 성능 최적화나 버그 수정이 직접적인 목표는 아니지만 결과적으로 영향을 미칠 수 있습니다. - 협업
사람이 이해하는 코드를 작성하는 것이 중요합니다, 코드 스타일 가이드, 일관된 네이밍 규칙, 주석 작성 원칙 등이 리팩토링의 요소가 될 수 있습니다.
Refactoring의 목표
리팩터링의 잠재적인 목표는 소프트웨어의 설계, 구조 및 구현을 개선하는 동시에 소프트웨어의 기능을 보존하는 것입니다. 리팩터링은 코드의 가독성을 향상시키고 복잡성을 감소시키는 효과를 가지며, 이러한 이점은 소스 코드의 유지 보수성을 개선하고 확장성을 개선하기 위해 더 단순하고, 깔끔하거나, 표현력이 뛰어난 내부 아키텍처 또는 객체 모델을 만들 수 있게 합니다.
- 리팩토링의 대표적인 기법
- 중복 코드 제거
- 긴 메서드 분리 (Extract Method)
- 변수명/함수명 개선 (Rename Variable/Method)
- 매직 넘버 제거 (Magic Number Elimination)
- 긴 클래스 분리 (Extract Class)
- 데이터 구조 단순화
- 리팩토링을 수행할 적절한 시기
- 코드 리뷰 과정에서
- 새로운 기능을 추가하기 전에
- 유지보수 중 코드가 이해하기 어려울 때
- 성능 개선이 필요한 경우 (성능을 고려한 리팩토링)
- 리팩토링과 테스트의 중요성
- 리팩토링 후에도 기능이 유지되는지를 보장하려면 테스트 코드가 필요합니다.
- 자동화된 단위 테스트와 리팩토링은 함께 진행되는 것이 이상적입니다.
'Software Engineering > Software Development Principles' 카테고리의 다른 글
의존성 주입(DI, Dependency Injection) (1) | 2025.03.05 |
---|---|
Code Smell (0) | 2025.03.03 |
Compiler (0) | 2025.03.03 |