Refactoring 이란?
소프트웨어를 보다 쉽게 이해할 수 있고, 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화 없이 내부 구조를 변경하는 것
핵심 정리
소프트웨어를 보다 쉽게 이해할 수 있고, 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화 없이 내부 구조를 변경하는 것
핵심 정리
- 새로운 기능을 추가해야 하는데 프로그램의 코드가 새로운 기능을 추가하기 쉽도록 구조화되어있지 않은 경우에는 먼저 리팩토링을 해서 프로그램에 기능을 추가하기 쉽게 하고, 그 다음에 기능을 추가한다.
- 리팩토링을 시작하기 전에 견고한 테스트 세트를 가지고 있는지 확인하라. 이 테스트는 자체 검사여야 한다.
- 리팩토링은 작은 단계로 나누어 프로그램을 변경한다. 실수를 하게 되더라도 쉽게 버그를 찾을 수 있다.
- 컴퓨터가 이해할 수 있는 코드는 어느 바보나 다 짤 수있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다.
- 완전하지 않은 인터페이스를 공표하지 마라. 매끄러운 리팩토링을 위해 코드 소유권 정책을 수정하라.
왜 리팩토링을 해야 하는가?
- 리팩토링은 소프트웨어의 디자인을 개선시킨다.
- 리팩토링은 소프트웨어를 더 이해하기 쉽게 만든다.
- 리팩토링은 버그를 찾도록 도와준다.
- 리팩토링은 프로그램을 빨리 작성하도록 도와준다.
언제 리팩토링을 해야 하는가?
- 별도의 시간을 내는것이 아니라, 틈틈히 계속 해야 하는 것이다.
- 어떤 것을 할 때 비슷한 어떤것을 하게 되면 리팩토링을 한다.(책에서는 3번째 부터 하라고 나와있지만 바로 한다.)
- 기능을 추가할 때 리팩토링을 해라.
- 버그를 수정해야 할 때 리팩토링을 하라.
- 코드 검토(code review)를 할 때 리팩토링을 하라.
- 읽기 어려운 프로그램은 수정하기 어렵다.
- 중복된 로직을 가지고 있는 프로그램 수정하기 어렵다.
- 실행중인 코드를 변경해야 하는 특별한 동작을 요구하는 프로그램은 수정하기 어렵다.
- 복잡한 조건문이 포함된 프로그램은 수정하기 어렵다.
언제 리팩토링을 하지 말아야 하는가?
- 코드를 처음부터 다시 작성해야 할때
- 마감일에 가까울 때
리팩토링과 디자인
리팩토링이 사전 디자인의 역할을 바꿀수 있기 때문에 간단한 솔루션을 만든 다음에 코딩을 하고 리팩토링을 한다.
※ 시스템이 어떻게 돌아가는지 정확하게 알고 있다 하더라도, 추측만 하지 말고 실제로 퍼포먼스를 측정해보라. 무엇인가 배울 것이고, 십중팔구는 추측이 틀렸을 것이다.
리팩토링과 퍼포먼스
리팩토링은 확실히 소프트웨어를 더 느리게 할 것이지만, 반면에 소프트웨어에 대한 퍼포먼스 튜닝을 더 쉽게 할 수 있도록 만든다.
'Programs > Refactoring' 카테고리의 다른 글
Refactoring - 데이터 구성 (1) | 2011.11.30 |
---|---|
Refactoring - 객체간의 기능 이동 (5) | 2011.11.21 |
Refactoring - 메소드 정리(Composing Methods) (4) | 2011.11.16 |