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

핵심 정리
  • 새로운 기능을 추가해야 하는데 프로그램의 코드가 새로운 기능을 추가하기 쉽도록 구조화되어있지 않은 경우에는 먼저 리팩토링을 해서 프로그램에 기능을 추가하기 쉽게 하고, 그 다음에 기능을 추가한다.
  • 리팩토링을 시작하기 전에 견고한 테스트 세트를 가지고 있는지 확인하라. 이 테스트는 자체 검사여야 한다.
  • 리팩토링은 작은 단계로 나누어 프로그램을 변경한다. 실수를 하게 되더라도 쉽게 버그를 찾을 수 있다.
  • 컴퓨터가 이해할 수 있는 코드는 어느 바보나 다 짤 수있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다.
  • 완전하지 않은 인터페이스를 공표하지 마라. 매끄러운 리팩토링을 위해 코드 소유권 정책을 수정하라.

왜 리팩토링을 해야 하는가?

  • 리팩토링은 소프트웨어의 디자인을 개선시킨다.
  • 리팩토링은 소프트웨어를 더 이해하기 쉽게 만든다.
  • 리팩토링은 버그를 찾도록 도와준다.
  • 리팩토링은 프로그램을 빨리 작성하도록 도와준다.


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

  • 별도의 시간을 내는것이 아니라, 틈틈히 계속 해야 하는 것이다.
  • 어떤 것을 할 때 비슷한 어떤것을 하게 되면 리팩토링을 한다.(책에서는 3번째 부터 하라고 나와있지만 바로 한다.)
  • 기능을 추가할 때 리팩토링을 해라.
  • 버그를 수정해야 할 때 리팩토링을 하라.
  • 코드 검토(code review)를 할 때 리팩토링을 하라.
    • 읽기 어려운 프로그램은 수정하기 어렵다.
    • 중복된 로직을 가지고 있는 프로그램 수정하기 어렵다.
    • 실행중인 코드를 변경해야 하는 특별한 동작을 요구하는 프로그램은 수정하기 어렵다.
    • 복잡한 조건문이 포함된 프로그램은 수정하기 어렵다.

언제 리팩토링을 하지 말아야 하는가?

  • 코드를 처음부터 다시 작성해야 할때
  • 마감일에 가까울 때


리팩토링과 디자인
리팩토링이 사전 디자인의 역할을 바꿀수 있기 때문에 간단한 솔루션을 만든 다음에 코딩을 하고 리팩토링을 한다.
※ 시스템이 어떻게 돌아가는지 정확하게 알고 있다 하더라도, 추측만 하지 말고 실제로 퍼포먼스를 측정해보라. 무엇인가 배울 것이고, 십중팔구는 추측이 틀렸을 것이다.

리팩토링과 퍼포먼스
리팩토링은 확실히 소프트웨어를 더 느리게 할 것이지만, 반면에 소프트웨어에 대한 퍼포먼스 튜닝을 더 쉽게 할 수 있도록 만든다.

 

Posted by outliers
,