본문 바로가기
백엔드/Java

리팩토링  맛보기 1탄

by david100gom 2019. 8. 11.

리팩토링의 정의

리팩토링( refactoring)  이란 외부에서 보는 프로그램 동작은 바꾸지 않고, 프로그램 내부 구조를 개선하는것이다

  • 리팩토링을 해도 외부에서 보는 프로그램 동작은 변하지 않는다
  • 리팩토링하면 프로그램의 내부 구조가 개선된다.

리팩토링의 목적

버그 수정과 기능 추가는 리팩토링이 아니다.

  1. 버그를 발견하기 쉽게 만든다.
    • 버그 수정자체는 리팩토링이 아니다. 하지만 리팩토링을 하면 프로그램이 정리되어 숨은 버그를 찾기 쉬워진다.
  2. 기능을 추가하기 쉽게 만든다.
    • 리팩토링을 하면 망가지고 더러운 코드를 다시 정비해서 깨끗하게 만들수 있다.
  3. 리뷰하기 쉽게 만든다.
    • 리팩토링으로 깔끔해진 코드는 읽기 쉽고 이해하기 좋다.

리팩토링의 한계

리팩토링이 불가능할때도 있다.

  1. 프로그램이 아직 동작하지 않을때 
    • 리팩토링하기 전에 동작하는 프로그램을 만들어야 한다. 마찬가지로, 설계나 코딩에 문제가 많아 버그투성이인 프로그램도 리팩토링이 불가능하다.
  2. 시간이 너무 촉박할때
    • 빨리 납품해야 하는 코드를 리팩토링하는 건 현명하지 않다. 

리팩토링과 악취

악취란?

  • 이해하기 어려운 부분
  • 수정하기 어려운 부분
  • 확장하기 어려운 부분

악취를 나타내는 6가지 말 - 소스 코드를 보다가 이말이 튀어 나오면 리팩토링이 필요하다.

  1. 겹친다
  2. 너무 길다
  3. 너무 많다
  4. 이름이 안맞다
  5. 너무 공개적이다
  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

댓글