Halo World

Refactoring(리팩토링) 본문

개발 지식/SW ENGINEERING

Refactoring(리팩토링)

_Yeony 2017. 6. 2. 16:31

 

| 리팩토링이란?

 

 나쁜 디자인의 코드를 좋은 디자인으로 바꾸는 방법

 > 외부동작을 바꾸지 않으면서 내부 구조를 개선하는 방법으로, 소프트웨어 시스템을 변경하는 프로세스

 > 소프트웨어의 기능은 바꾸지 않음

 

 

 

| 리팩토링의 특징

 

  - 소프트웨어의 디자인을 개선시킴

  - 소프트웨어를 더 이해하기 쉽게 함

  - 프로그램의 구조를 명확히 함으로써 버그를 잡도록 도와줌

  - 소프트웨어의 개발 속도를 향상시킴

 

 

 

| 리팩토링을 언제 해야하는가?

 

 리팩토링 자체를 목적으로 삼기 보다는, 다른 것에 대한 수단으로 리팩토링을 함

 

 - 삼진 규칙 : 스트라이트 세 개면 리팩토링을 함

   (어떠한 것을 처음 할 때는 그냥하고, 두 번째에도 중복되도록 그냥 하고, 세 번째로 비슷한 것을 하게 되면 그때 리팩토링을 한다)

 - 기능을 추가할 때 리팩토링을 함

   (수정해야하 코드에 대한 이해가 높아지며 기능 추가가 쉬운 디자인으로 바꿀 수 있음)

 - 버그를 수정해야 할 때 리팩토링을 함

 - 코드 검토를 할 때 리팩토링을 함

 

 

 

| 리팩토링을 할 때의 문제점

 

 > 데이터베이스

 

  대부분의 비즈니스 애플리케이션은 데이터베이스 스키마와 밀접하게 결합되어 있다. 데이터베이스 스키마와 객체 모데간의 종속을 최소화하기 위해 계층 구조로 만들었다 하더라고, 스키마를 변경하려면 데이터를 migrate 해야하는데 시간도 오래걸리고 위험도도 크다.

 

 > 인터페이스 변경

 

  객체를 사용하는 부분을 변경하지 않고도, 객체의 내부 구조를 안전하게 바꿀 수 있지만, 인터페이스를 변경하면 어떤 일이 발생할지 모르기 때문에 인터페이스를 유지하는 것은 중요하다.

 그러나, 많은 리팩토링이 인터페이스를 변경시킨다

 

 

 

 * 언제 리팩토링을 하지 말아야 하까?

   - 코드를 처음부터 다시 작성해야 할 때

   - 마감일에 가까울 때

 

 

 

참조

http://codereview.tistory.com/3

 

 

'개발 지식 > SW ENGINEERING' 카테고리의 다른 글

리팩토링 수행 절차  (0) 2017.06.02