본 내용은 마틴 파울러의 Refactoring 2판을 토대로 작성되었습니다.
리팩터링 원칙
리팩터링의 유래
- 정확한 유래는 찾을 수 없음
- 실력있는 프로그래머는 항상 자신의 코드를 정리하는 데 어느 정도의 시간을 할애
- 깔끔한 코드가 수정하기 쉬움
- 단, 처음부터 깔끔하게 작성하는 경우는 거의 없음
- 리팩터링은 소프트웨어 개발 프로세스 전반의 핵심 요소
- 스몰토크
- 기능이 풍부한 소프트웨어를 빠르게 작성할 수 있는 굉장히 역동적인 환경
- 개발 환경 중에서 리팩터링을 활용하기 특히 좋음
- 컴파일-링크-실행 주기가 상당히 짧음
- 마지막으로 컴파일한 시점을 안다면 수정 작업을 빠르게 진행 가능
- 객체 지향 언어의 경우, 인터페이스만 잘 정의해두면 내부 수정이 일부에 미치는 영향을 최소로 줄일 수 있음
- 그 결과로 XP가 탄생
- 생산성을 높이는 데에 리팩터링의 역할이 큼
- 리팩터링은 주류 개발 기법으로 자리잡게 됨
리팩터링 자동화
- 자동 리팩터링을 지원하는 도구 등장
- 인텔리제이 IDEA
- 이클립스
- 자바로 프로그래밍 할 때는 메서드 이름을 바꾸는 작업을 메뉴에서 원하는 항목을 클릭하는 것만으로 처리 가능
- 테스트가 필요 없을 정도로 안정적
- 현재는 에디터나 독립 도구에서느 리팩터링 기능을 제공할 정도로 흔해짐
- 언어마다 리팩터링 자동화할 수 있는 범위가 다름
- 자동 리팩터링을 제대로 구현하려면 구문 트리로 해석해서 다뤄야 함
- 단순하게 텍스트 찾아 바꾸기로 구현하는 것은 테스트 이전에 신뢰하면 안 됨
- 구문트리는 코드의 원래 의미를 보존하는 데 훨씬 유리
- 단순히 구문 트리를 해석해서 수정하는 것만으로는 리팩터링을 구현할 수 없음
- 변경된 구문 트리를 다시 에디터 화면에 텍스트로 바꿔 표현해야 함
- 뛰어난 IDE가 자동 리팩터링도 더 풍부하게 제공
- IDE는 리팩터링뿐 아니라, 코드 탐색과 린팅을 비롯한 다양한 기능을 구현하는데 구문트리를 활용
- 정적 타입 언어라면 훨씬 안전하게 구현할 수 있는 리팩터링 수가 늘어남
- 언어 서버
- 구문 트리를 구성해서 텍스트 에디터에 API 형태로 제공하는 소프트웨어
- 언어 서버는 다양한 텍스트 에디터를 지원
- 정교한 코드 분석, 리팩터링 기능 제공
'programming study > Refactoring' 카테고리의 다른 글
Refactoring - 코드에서 나는 악취(2) (0) | 2021.12.26 |
---|---|
Refactoring - 코드에서 나는 악취(1) (0) | 2021.12.26 |
Refactoring - 리팩터링 원칙(4) (0) | 2021.12.14 |
Refactoring - 리팩터링 원칙(3) (0) | 2021.12.13 |
Refactoring - 리팩터링 원칙(2) (0) | 2021.12.12 |