ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리팩토링 / 마틴 파울러 - (1) 발단
    개발/자습중 2018. 2. 9. 14:00

    첫번째 프로젝트에 투입되었을 때는 이미 기존 개발자들이 1차 오픈 대상 기능을 80% 이상 구현해둔 상태였다. 

    나는 1차 오픈 이후 철수한 프리랜서들이 만들어둔 코드를 유지보수하면서 2차 오픈 대상 기능을 만들어야 했는데,

    공통 메소드 같은 것들은 거의 다 완성되어 있었기에 편하기도 했고, 남이 짜놓은 소스를 다시 들여다보면서 수정해야 하기도 해서 고생도 많이 했다.


    하루는 급작스럽게 조건 처리 로직이 변경되면서 정기배포 2시간 전에 급하게 조건문을 수정해서 배포했다.

    당연히 테스트할 시간이 부족했지만 부장님이 잘못되면 책임지시겠다는 말을....바보같이 믿고 찝찝해하며 배포를 진행했다.

    이런 경우는 거의 95%의 확률로 배포 당일날에는 발견하지 못했던 에러를 배포 다음날에 발견한다.

    이 날도 역시 배포 직후 테스트 당시에는 문제가 없어서 이상 없음 확인 서명까지 하고 눈누난나 집으로 갔지만

    다음날 업무를 시작하자마자 시스템 장애를 겪는 사람이 하나 둘 등장하기 시작했다. 


    로직에는 문제가 없고 소스도 멀쩡한데 대체 왜! 조건 처리 로직이 안 먹는것이냐 했는데

    알고 보니 해당 화면의 소스 파일에서 같은 로직을 처리하는 부분이 네 군데나 있었고, 

    내가 딱 세번째 로직까지만 로직을 수정하고 제일 마지막에 있는 로직은 미처 못 보고 넘어가는 바람에 오류가 났던 것이었다......


    만약 이 조건 처리 로직을 하나의 함수로 만들고, 조건 처리가 필요할 때마다 이 함수를 호출하게 만들었다면 아마 이런 사태는 나지 않았을 것이다.

    이 날 이후로 나는 소스를 건드릴 때마다 거의 병적으로 함수를 분리하는 짓을 해댔다.

    그 때 당시에는 내가 하는 일이 뭔지도 모르고 그냥 최대한 소스를 보기 좋게 해놔야 나중에 고생을 안한다는 생각 하나로 열심히 수정했다. 

    최근에 자바만을 이용해서 게임을 만드는 유튜브 강좌를 보다가 내가 정신병자처럼 해대던 짓이 바로 '리팩토링' 이라는 것을 알게 됐다.


    마침 프로젝트 제안 작업조차 들어가기 전이라 약간 시간이 남아서 리팩토링 관련 서적을 사서 공부를 해보기로 했다.

    구글링을 좀 해봤는데 클래식으로 추앙받는데는 다 이유가 있다는 신념 하에 마틴 파울러의 리팩토링을 구입했다.

    앞으로 이 토픽에서는 책을 보고 공부하면서 꼭 기억해야 할 듯한 것들을 남기겠다.

    댓글

Designed by Tistory.