171127-TIL

Reading time ~2 minutes

오늘 한일

- HTTP 웹 서버 구현 리팩토링

  • HttpResponse 테스트 코드 활용

  • HttpResponse에서 출력스트림을 가지고, 버퍼에 쓰게 변경

  • GET/POST에 따라 200/320가 결정 되던 부분을 변경 하고, controller 단에서 forward(), sendRedirect()를 통해 결정되게 변경


오늘 느낀점

  • HttpResponse도 이전의 HttpRequest 클래스 처럼 스스로 테스트 코드를 작성하지 못했는데, 포비가 예시로 준 테스트 코드를 사용하여 리팩토링을 시도하였다. 확실히 테스트코드가 있는 경우가 리팩토링 시 많은 시간을 단축 시켜준다. 그러면서 자연스럽게 테스트 코드에 포함 된 forward(), sendredirect() 메소드가 추가되는 방식으로 진행을 하였다.
    이전에 만든 코드에서 핵심 로직 중 한 부분이 바뀌게 된건 아쉽지만 대신 다른 부분의 변경은 최소화 하며 작업을 진행 하였다.(실제로도 추가적인 작업이 예정 되어 있던 Cookie 부분을 빼면 다른 부분의 변경은 적었다)그렇게 작업을 하고 나니까 이전에 있던 불필요한 부분들이 많이 걷어지고 간결해지는 느낌을 받게 되었다. 저번주 코드보다 지금 코드가 낫다고 확실히 말 할 수 있을거 같다.

  • 제시되어 있는 테스트 코드 등 리팩토링의 힌트들을 진작에 보고 내 코드에 욕심을 안내고 적용했다면 좀더 빠르게 진행 했을 것 같다.(사실 욕심 냈던 코드들은 대부분 사라졌다…)그래도 욕심을 냈던 만큼 아쉬운 코드(혹은 아이디어)들을 버리면서 버릴건 버리는 경험도 하게 된거 같다. 이전 볼링의 경우 힌트를 얻으면 현재 코드에 적용이 힘들어 새로 만드는 식으로 많이 했는데 이번에는 다시 처음부터 시작 한적은 없다. 새로운 방식을 적용하며 리팩토링을 하였다. 그런면에서 이번에 초반에 작성한 돌아가긴 해도 엉망인 코드에서 더 나은 코드로 한걸음씩 이동해 간 느낌도 들었고 나중으로 갈 수록 일부분이 바뀌더라도 다른 곳에서 수정할 부분이 적어졌다.(커플링이 줄어든 것일까?)
    또한 이전에는 갖지 못했던 사용자 입장에서 코드를 작성해 보았다. 지금으로선 다른 것들도 있지만 한 부분(content-type을 controller에서 입력하는 것)이 크게 마음에 안들지만, 그 부분을 빼면 사용자가 controller를 추가해 주고 해당 컨트롤러에서 어떤 로직을 담고 200 혹은 302만 호출하면 작동 할 수 있게 하는 것에 중점을 두고 작업을 해봤는데 지금으로선 만족 할 만 한것 같다.(간단히 추가를 한다면 위에서 말한 컨텐츠타입과 400에러 부분)

  • 저번주 금요일 부터 시야 상에 포스트잇을 붙이고 작업 하고 있는데 확실히 그 효과를 보고 있는거 같다. 눈 앞에 내가 해야할 일을 적어 놓음으로써 지속적으로 무엇을 해야하는지 상기 시켜주고, 해결 된 일, 남은 일을 보면서 점점 목록이 줄어드는 걸 보면서 저녁이 되면서 지칠 수도 있는 상황에서 도리어 기운이 나기도 한다. 또한 현재 작업 중인 목록을 보게 되면 한 작업이 길어지면서 내가 무엇을 하고 있나 방향을 잃을 때가 있다. 그때 지속적으로 내가 무얼 하고 있는지 상기 시켜준다. 게다가 간략하게 적지만 너무 포괄적으로 적지도 않기 때문에 오늘 해야 할 일이 정리되기도 한다.(포스트잇 한장이다. 딱 적당한 분량만 적을 수 있다. 만약 해야할 일이 많다면 한장 분이 끝나고 그 다음 새로 작성해서 진행하면 된다.)
    군시절 행정병 계통이였던지라 사용했던 방식인데 나한텐 잘 맞는 것 같다.

  • 이번 과제를 하면서 조금은 느렸을 수도 있는데 내 속도대로 잘 진행한거 같다. 솔직히 조금 늦어 졌다던지 늘어진 부분이 있다. 내가 미숙해서 늦어진 부분은 별수 없는데 늘어진 부분이 문제다. 중간에 그랬는데 후반으로 가면서 나아졌으니 최소한 지금 이 걸음걸이를 유지 하거나 조금은 더 빨리 갈 수 있게 노력해보자.(억지로 무리하진 말고 자연스럽게 가자)


내일 할일

  • HTTP 웹 서버 구현이 merge 되었다니 다음 단계?

  • 시계를 바꿔 가자(운동량 체크)