BeeBot 자동매매 프로그램 개발: 9단계: 쉬어가는 글-refactoring

TDD로 작업하면 코드가 조금씩 점차로 불어나게 되는데, 마구 달리다 보면 숲은 보지 못해 길을 잃게 되는 경우가 있습니다.

TDD의 특성상 unit test에 집중하다 보면 눈앞의 과제만 헤쳐나가게 됩니다. 이런 방식으로 오솔길을 따라 가다 보면 나중에는 구조적인 문제에 봉착하게 됩니다.

그래서 틈틈이 인테그레이션 테스트를 하면서 구조적인 문제에 대해서 충분히 점검해 보아야합니다.

만일 그대로 진행한다면 나중에는 빼도박도 못하는 상황이 발생할 수 있습니다.

코드를 조금씩 수정하기에는 구조적인 문제가 크고, 그렇다고 구조적인 변경을 하자니 코드를 전체적으로 갈아엎어야 하므로 일일 커지게 됩니다.

그동안 한 작업을 폐기해야하는 것도 안타까운 일이 되므로 구조변경을 회피하기 위한 미봉책을 찾게 되기도 합니다.

그러므로 틈틈이 구조적인 문제를 점검해서 설계의 미비점을 보완해 나가야 합니다.

지난 단계에서 봇을 시운전하는 과정을 통해 그동안의 결과물들을 활용해서 자동매매를 해 보았습니다. 그런데 자동매매에 필요한 기능들이 추가로 발견되었고, 이러한 기능들을 main에다가 날코딩해서 시험하다 보니 main코드의 크기가 500라인을 넘어버렸습니다.

프로그램의 구조가 간결해 지기 위해서는 구조적인 재설계가 필요하고 그에 따른 리팩터링은 매우 도전적인 과제가 됩니다. 그에 대한 공부를 따로 하기에는 배보다 배꼽이 큽니다.

꿩잡는 게 매라고 지금은 main의 블록을 별도의 함수로 분리 독립하는 방법을 택하도록 하겠습니다.

main 코드의 내용을 대강 살펴보면 다음과 같습니다.

  1. 봇을 구동하기 위한 준비단계에서 해야하는 일
  2. 전략으로 부터 매매신호를 받았을 때 해야하는 일
  3. 매매가 체결되거나 취소되었을 때 해야하는 일

로 구성됩니다.

1번은 bot.bootstrap으로 독립시키고

2번은 bot.trade로 독립시키고

3번은 bot.settle로 각각 분리 독립 시키기로 합니다.

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다