소프트웨어 리팩토링 개요 및 기법
Source
Evernote/Technote scraps/준환이형님쩜넷 - 따뜻하게 즐기는 코딩 한 잔~♪ 리팩토링(Software Cord Refactoring).md
Summary
이 문서는 소프트웨어 리팩토링의 정의, 필요성, 적용 시점, 그리고 구체적인 기법을 정리한 교육 자료 요약본이다. 리팩토링은 외부 동작을 변경하지 않고 내부 구조를 개선하여 코드 가독성, 유지보수성, 버그 수정 용이성을 높이는 과정으로 정의된다. Kent Beck의 관점을 인용하며, 리팩토링이 초기 디자인 부담을 줄이고 장기적인 개발 속도를 높인다고 설명한다. 주요 내용으로는 ‘삼진 규칙’ 등 리팩토링 적용 시점, 테스트 코드(TDD)의 필수성, ‘Bad Smells in Code’(중복 코드, 긴 메소드 등)를 통한 리팩토링 대상 식별, 그리고 Extract Method, Inline Method 등 구체적인 메소드 정리 기법과 코드 예시가 포함되어 있다.
Key Points
- 리팩토링 정의: 외부 기능은 유지한 채 내부 코드 구조를 개선하여 버그 가능성을 최소화하고 가독성을 높이는 과정.
- 리팩토링의 가치: 초기 디자인의 완벽함을 강요하지 않고 단순한 디자인으로 시작할 수 있게 하며, 장기적으로 개발 속도와 유지보수성을 향상시킴.
- 적용 시점: ‘삼진 규칙’(비슷한 코드를 세 번째로 볼 때), 기능 추가 시, 버그 수정 시, 코드 리뷰 시.
- 전제 조건: 리팩토링의 안전장대 역할을 하는 견고한 자동화 테스트 코드(TDD)의 존재가 필수적임.
- 리팩토링 대상 식별(Bad Smells): 중복된 코드, 긴 메소드, 거대한 클래스, 긴 파라미터 리스트, 기능에 대한 욕심(FEATURE ENVY) 등 코드 냄새를 통해 리팩토링 필요성을 판단.
- 구체적 기법(Composing Methods): Extract Method(메소드 추출), Inline Method(메소드 인라인화), Replace Temp with Query(임시 변수를 쿼리로 대체) 등 코드 구조를 단순화하는 기법 소개.