본문 바로가기

Programming

Refactoring 정의와 필요한 이유

이번 글은 간단하게 Refactoring의 정의와 필요한 이유에 대해서 알아 볼까 한다.

 

Refactoring의 정의

 

1. Refactoring(명사) - 소프트웨어를 보다 쉽게 이해할 수 있고적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화 없이 내부 구조를 변경하는 것.

 

2. Refactor(동사) - 일련의 리팩토링을 적용하여 겉으로 보이는 동작의변화 없이 소프트웨어의 구조를 바꾸다.

 

Refactoring 을 해야 하는 이유

 

1. Refactoring은 소프트웨어의 디자인을 개선시킨다.

 - Refactoring은 코드를 정돈 하는 것이다그래서 코드의 중복된 부분을 제거 한다이렇게 함으로

나중에 코드를 수정하더라도필요한 부분만 수정할 수 있을 뿐만 아니라각각의 작업데 대한 코드가 오직 한 곳에만 있게 할 수 있다.

 

2. Refactoring은 소프트웨어를 더 이해하기 쉽게 만든다.

- Refactoring은 코드를 이해하면서 내부 구조를 바꾸는 것이므로할 수록 코드가 점점 명확해 짐을 알 수 있다.

 

3. Refactoring 은 버그를 찾도록 도와준다.

코드의 의미를 명확하게 이해하면서자동으로 버그를 알게 되는 것그래서 더욱 Robust(견고한 코드를 작성하게 도와준다.

 

4. Refactoring은 프로그램을 빨리 작성하도록 도와준다.

소프트웨어 개발의 속도를 어느정도로 유지하기 위해서는 좋은 디자인은 필수다. Refactoring은 시스템의 디자인이 나빠지는 것을 멈추게 하여소프트웨어를 보다 빨리 개발할 수 있도록 도와준다또한 디자인을 향상시키기도 한다.

 

Refactoring을 해야 할 시기

 

1. 삼진 규칙

- Don Roberts 에 의하면어떤 것을 처음 할 때는그냥 한다두 번째로 비슷한 어떤 것을 하게 되면중복 때문에 주춤하지만 그냥 중복되도록 한다세 번째로 비슷한 것을 하게 되면그때 Refactoring을 한다. (스트라이크 세개면 Refactoring을 한다.)

 

2. 기능을 추가할 때

보통 기능추가를 할 경우에는 자신의 코드가 아니어서 이해를 하기 힘들경우가 많다이럴때는 Refactoring을 하면서 코드를 이해하기 쉽게 된다혹은 기능추가가 쉽지 않은 디자인을 갖고 있는 프로그램일 경우이다이럴때는 Refactoring을 하면서 디자인이 이해하기 쉬운 형태로 바뀌기 때문에 기능을 추가할 경우훨씬 더 빠르고매끄럽게 수행 될 수 있다.

 

3. 버그를 수정해야 할 때 Refactoring을 하라

버그 리포트를 받으면그것은 Refactoring이 필요하다는 신호인데왜냐하면 버그가 있었다는 것을 몰랐을 정도로 코드가 명확하지 않았다는 뜻이기 때문이다.

 

4. 코드 검토(Code Review)를 할 때 Refactoring을 하라

- Refactoring은 다른 사람의 코드를 검토하는데 도움이 된다이렇게 함으로써코드가 어떻게 보일지 더욱 명확하게 알 수 있다.