리팩토링의 정의
리팩토링( refactoring) 이란 외부에서 보는 프로그램 동작은 바꾸지 않고, 프로그램 내부 구조를 개선하는것이다
- 리팩토링을 해도 외부에서 보는 프로그램 동작은 변하지 않는다
- 리팩토링하면 프로그램의 내부 구조가 개선된다.
리팩토링의 목적
버그 수정과 기능 추가는 리팩토링이 아니다.
- 버그를 발견하기 쉽게 만든다.
- 버그 수정자체는 리팩토링이 아니다. 하지만 리팩토링을 하면 프로그램이 정리되어 숨은 버그를 찾기 쉬워진다.
- 기능을 추가하기 쉽게 만든다.
- 리팩토링을 하면 망가지고 더러운 코드를 다시 정비해서 깨끗하게 만들수 있다.
- 리뷰하기 쉽게 만든다.
- 리팩토링으로 깔끔해진 코드는 읽기 쉽고 이해하기 좋다.
리팩토링의 한계
리팩토링이 불가능할때도 있다.
- 프로그램이 아직 동작하지 않을때
- 리팩토링하기 전에 동작하는 프로그램을 만들어야 한다. 마찬가지로, 설계나 코딩에 문제가 많아 버그투성이인 프로그램도 리팩토링이 불가능하다.
- 시간이 너무 촉박할때
- 빨리 납품해야 하는 코드를 리팩토링하는 건 현명하지 않다.
리팩토링과 악취
악취란?
- 이해하기 어려운 부분
- 수정하기 어려운 부분
- 확장하기 어려운 부분
악취를 나타내는 6가지 말 - 소스 코드를 보다가 이말이 튀어 나오면 리팩토링이 필요하다.
- 겹친다
- 너무 길다
- 너무 많다
- 이름이 안맞다
- 너무 공개적이다
- 객체 지향적이지 않다.
리팩토링 카탈로그
리팩토링에는 많은 종류가 있다. 마틴파울러의 저서 (리택토링: 코드품질을 개선하는 객체지향 사고법) 에서는 각 리팩토링의 목적과 절차를 카탈로그 형식으로 정리했다. 이 카탈로그를 리팩토링 카탈로그라고 부릅니다. (http:///www.refactoring.com 참고)
리팩토링할때는 카탈로그에 따라 체계적으로 코드를 변경한다.
리팩토링 에센스
리팩토링의 기초 : 스텝 바이 스텝
- 두 가지 수정을 한꺼번에 하지 않기
- 되돌리기 쉽게 하기
- 단계마다 확인하기
- 오래된 것을 새로운것으로 바꾸기 : 동작하는 상태를 유지하면서 새로운 코드를 추가해서 오래된 것이 모두 새로워지면 오래된 것을 제거한다.
참고 서적 : 자바로 배우는 리팩토링 입문 (http://www.yes24.com/Product/Goods/55147071?scode=032&OzSrank=1)
'백엔드 > Java' 카테고리의 다른 글
Effective Java 맛보기 3탄 (0) | 2019.09.15 |
---|---|
Effective Java 맛보기 2탄 (0) | 2019.09.15 |
Effective Java 맛보기 1탄 (0) | 2019.09.14 |
Spring Data Redis - Jedis vs Lettuce (0) | 2019.08.18 |
JUnit 4.5 에러 (0) | 2019.03.13 |
Spring @Autowired 사용시 주의점 (0) | 2019.03.11 |
Spring + Mybatis + Junit 단위 테스트 (0) | 2017.09.06 |
PowerMockup (0) | 2013.10.09 |
댓글