2014. 4. 20. 18:09

리팩토링(refactoring)은 다양한 코드 개선 활동 중 하나이다.

그렇다면 코드 개선 활동이란 무엇인가? 더 나은 코드를 만드는 모든 노력을 의미한다.


[코드 개선 활동의 종류]


- 코드 이해를 돕기 위한 주석(comment) 작성

- 보다 높은 성능을 보장하고, 적은 자원(resource : memory, file 등) 위한 튜닝(tunning)

- 더 나은 혹은 다양한 알고리즘 적용

- 코드 가독성(readability)를 높이고, 일관된 표준 적용을 위한 코드 포맷팅(formatting)

- 불필요하거나 오동작할 수 있는 코드 제거 (예를 들어, 입력 값 범위 체크 혹은 null 값 검사)

- 그리고, 리팩토링(refactoring)


이중에서 refactoring 행위에 대해 마틴 파울러는 코드의 

나쁜 냄새(Bad smells in codes)를 제거하는 것이라고 정의한다.


코드의 나쁜 냄새는 '이해하기 어렵거나, 수정하기 어렵고, 확장하기 어려운 상태'라고 표현할 수 있다.

그런데, 이런 것들을 제거하는 목적은 무엇일까? 그리고, 리팩토링이 다른 코드 개선 노력과 다른 점은 무엇인가?


[리팩토링의 목적]


- 다수에 의한 '공동 개발 (협력 개발)'을 이롭게 하는 것이다.

- 또다른 목적은 '코드의 품질'을 높여 장기적으로 이미 작성된 코드 덩어리가

 '쓰레기(junk)' 혹은 '스파게티' 코드로 전락하는 것을 막는 것이다. 

  ('나쁜 냄새의 의미를 더 잘 이해할 수 있다. 나쁜 냄새는 부패하기 시작하는 모든 것들을 알아 차릴 수 있는 신호다.)


[리팩토링이 다른 코드 개선 노력과 다른 점]


- 프로그램의 기능을 변경하지 않는다.

- 수행 속도, 자원 사용량 등 성능 및 효율 개선을 목표로 하지 않는다.

- 코드 자체 보다 코드를 다루는 인간(프로그래머 자신과 동료)을 위한 배려가 담겨 있다.



Posted by 곽중선