✊ 필오의 개발일지
Back to Posts
2020년 4월 4일

리팩토링2판) 1. 예시로 알아보기

리팩토링2판) 1. 예시로 알아보기

TL;DR

⭐️⭐️⭐️

  1. 리팩토링하기 전에 제대로 된 테스트부터 마련한다. 테스트는 반드시 자가진단하도록 만든다.
  2. 프로그램이 새로운 기능을 추가하기에 편한 구조가 아니라면, 먼저 기능을 추가하기 쉬운 형태로 리팩터링하고 나서 원하는 기능을 추가한다.
  3. 리팩터링은 프로그램 수정을 작은 단계로 나눠 진행한다. 그래서 중간에 실수하더라도 버그를 쉽게 찾을 수 있다.
  4. 컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다.
  5. 캠핑자들에게는 도착했을 때보다 깔끔하게 정돈하고 떠난다는 규칙이 있다. 프로그래밍도 마찬가지다. 항시 코드베이스를 작업 시작 전보다 건강하게(healthy) 만들어놓고 떠나야 한다.
  6. 좋은코드를 가늠하는 확실한 방법은 얼마나 수정하기 쉬운가다. (다형성을 활용해 계산 코드 재구성하기)
  7. 코드를 건강하게 관리하려면 프로그래밍 팀의 현재와 이상의 차이에 항상 신경 쓰면서, 이상에 가까워지도록 리팩토링해야한다.


예시로 접근해보기

최초 코드

발견부분

  1. 청구내역을 HTML로 출력하는 기능이 필요.
  2. 예측 가능한 기획 변경 대응

리팩토링하기 전에 제대로 된 테스트부터 마련한다.
테스트는 반드시 자가진단하도록 만든다.


프로그램이 새로운 기능을 추가하기에 편한 구조가 아니라면,
먼저 기능을 추가하기 쉬운 형태로 리팩터링하고 나서
원하는 기능을 추가한다.

리팩터링은 프로그램 수정을 작은 단계로 나눠 진행한다.
그래서 중간에 실수하더라도 버그를 쉽게 찾을 수 있다.


함수 추출 이후에는 명확하게 표현할 수 있는 간단한 방법을 찾아보자.


컴퓨터가 이해하는 코드는 바보도 작성할 수 있다.
사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다.


캠핑자들에게는 도착했을 때보다 깔끔하게 정돈하고 떠난다는 규칙이 있다.
프로그래밍도 마찬가지다.
항시 코드베이스를 작업 시작 전보다 건강하게(healthy) 만들어놓고 떠나야 한다.


좋은코드를 가늠하는 확실한 방법은 얼마나 수정하기 쉬운가다.
다형성을 활용해 계산 코드 재구성하기

function amountFor(aPerformance) { let result = 0; switch (aPerformance.play.type) { case 'tragedy': //비극 result = 40000; if (aPerformance.audience > 30) result += 1000 * (aPerformance.audience - 30); break; case 'comedy': //희극 result = 30000; if (aPerformance.audience > 20) result += 1000 + 500 * (aPerformance.audience - 20); result += 300 * aPerformance.audience; break; default: throw new Error(`알 수 없는 장르: ${aPerformance.play.type}`); } return result; }
  1. 원본함수를 중첩 함수 여러개로 나눴다.
  2. 계산코드와 출력코드를 분리했다. (단계 쪼개기)
  3. 계산로직을 다형성으로 표현했다.

코드를 건강하게 관리하려면
프로그래밍 팀의 현재와 이상의 차이에 항상 신경 쓰면서,
이상에 가까워지도록 리팩토링해야한다.

리팩토링을 효과적으로 하는 핵심은

Previous예측 마케팅이란? (1장)
NextWebDAV와 공동작업

Related

© 2026 Felix