티스토리 뷰
Code Refactoring
코드 리팩토링은 기존의 소프트웨어 코드를 수정하거나 재구성하여 가독성을 향상시키고 유지보수를 용이하게 만드는 과정이다. 리팩토링은 기능을 변경하지 않으면서 코드의 내부 구조를 개선하는 작업을 의미하며, 주로 다음과 같은 목적으로 수행된다.
- 가독성 향상
- 유지보수 용이성
- 성능 최적화
- 재사용성 향상
- 기능 추가 용이성
- 사용하지 않는 코드, 중복된 코드 제거
최적화, 디버깅, 방어 코드 추가, 테스트 환경 조성 등과 혼동하기도 한다.
리펙토링 목적
코드 리팩토링의 목적은 기존 코드를 효율적으로 개선하여 가독성, 유지보수 용이성, 성능, 기능 추가 용이성 등을 향상시키고, 전반적인 소프트웨어 품질을 향상시키는 것이다.
리팩토링을 하면서 지속적으로 코드가 정상 동작을 하는지 확인해야 하고, 동작에 영향을 주어서는 안 된다.
리펙토링 과정
분석
코드를 분석하여 어떤 부분을 리팩토링해야 할지 식별하고 개선할 방향을 결정
계획
리팩토링 작업의 범위와 목표를 설정하고, 어떤 방식으로 접근할 것인지 계획
작업
코드를 수정하고 개선하는 작업을 수행합니다. 이때 단계적으로 변경하며 테스트를 수행하여 기능이 제대로 작동하는지 확인
테스트
리팩토링 후에는 기존의 테스트 케이스들이 여전히 올바르게 작동하는지 확인합니다. 필요한 경우 새로운 테스트 케이스를 추가하여 코드의 정확성을 검증
반복
필요한 경우 리팩토링 작업을 여러 번 반복하여 코드를 지속적으로 개선
리펙토링 방식
함수 추출 (Extract Function)
함수의 일부분을 새로운 함수로 추출하여 코드를 분리하고 재사용성을 높다. 코드 블록이 길거나 반복되는 구조가 있을 때 유용하다.
변수 추출 (Extract Variable)
복잡한 표현식을 의미 있는 변수로 추출하여 가독성을 향상시킨다.
함수 인라인 (Inline Function)
함수를 호출하는 부분을 함수 본문으로 대체하여 간결하게 만든다.
조건문 단순화 (Simplify Conditional)
복잡한 조건문을 단순화하거나 중복을 제거하여 코드를 깔끔하게 만든다.
반복문 간소화 (Simplify Loop)
반복문을 간소화하거나 함수를 사용하여 반복 로직을 추상화한다.
클래스 추출 (Extract Class)
클래스의 일부 기능을 새로운 클래스로 분리하여 클래스의 역할을 명확히 한다.
메서드 추출 (Extract Method)
긴 메서드를 작은 단위로 나누어 가독성을 높이고 코드를 재사용 가능하게 만든다.
중복 코드 제거 (Remove Duplication)
중복된 코드를 함수나 클래스로 묶거나 상속 등을 사용하여 중복을 제거한다.
변수이름 변경 (Rename Variable)
의미 있는 변수명으로 변경하여 코드의 가독성을 향상시킨다.
함수 파라미터 추가 및 제거 (Add/Remove Parameter)
함수의 파라미터를 조정하여 인터페이스를 더 명확하게 만든다.
클래스 리팩터링 (Class Refactoring)
클래스의 구조를 변경하여 코드의 구조를 더 나은 형태로 조직화한다.
상속 구조 개선 (Improving Inheritance)
상속 구조를 개선하여 코드의 재사용성과 유지보수성을 향상시킨다.
조건문을 다형성으로 대체 (Replace Conditional with Polymorphism)
복잡한 조건문을 다형성을 활용하여 더 간결하고 확장 가능한 구조로 변경한다.
임시 변수 제거 (Remove Temporary Variable)
불필요한 임시 변수를 제거하여 코드를 간결하게 만든다.
모듈화 (Modularization)
코드를 모듈화하여 각 모듈의 역할과 책임을 분리한다.
'Computer' 카테고리의 다른 글
[전공기초] 인터프리터 언어(Interpreter Language) vs 컴파일 언어(Compiled Language) (1) | 2023.09.25 |
---|---|
[Programming] Thread (쓰레드) (0) | 2023.08.01 |
[Programming] 의사코드 (슈도코드, pseudocode) (0) | 2023.08.01 |