마지막으로 circle도 arc를 사용하는 것으로 고쳐 보자.
def circle(t, r):
arc(t, r, 360)
인터페이스를 개선하고 코드 재사용을 쉽게 하도록 프로그램을 재정리하는 과정을 리팩터링(refactoring)이라고 한다. 이 예에서는 arc와 polygon에 비슷한 코드가 있다는 걸 알고 이를 polyline으로 “뽑아놓았다(factored it out).”
우리가 미리 계획을 세워서 polyline을 작성했다면 리팩터링을 피할 수 있었을 것이다. 그렇지만 프로젝트 초기에 모든 인터페이스를 디자인할 정도로 모든 걸 알고 있기는 어렵다. 코딩을 해 봐야 문제를 더 잘 이해하게 된다. 때때로 리팩터링은 무언가를 배웠다는 증거일 수 있다.