1주차

우아한 테크 프리코스에 참여한지 첫 미션을 받고 1주일이 지났다. 사실 내가 우아한 테크코스에 참여하게 된 이유는 올바른 개발 방법이 궁금해서였는데, 다행히 그 목적에 맞게 미션 마다 요구사항과 규칙들이 있었고 그것들을 따르고 지키면서 ‘우아한 테크코스에서 지향하는 방법들은 적어도 이런 것들과 가깝겠구나’ 싶었다.

1주차 미션은 ‘문자열 덧셈 계산기’ 였다. 미션을 처음 받고나서는 ‘쉽다’ 라는 생각이 들었던 것 같다. 하지만 그건 단순히 결과만 출력하면 된다는 생각을 가진 내 착각 이었던 것 같다.

미션에는 기능 별로 커밋하라는 요구사항이 있었는데 그 때 들었던 생각은 문제를 푸는게 중요한게 아니라, 계획을 세우고 그 계획대로 처리를 해야된다는 생각이 들었다. 그래서 코딩을 하면서 현재 작업하고 있는 기능을 넘어간 코딩을 할 때면 전부 지우고 커밋 한 뒤에 다시 작성했었다. 사실 이렇게 까지 해야하나? 라는 생각이 들었지만 어떻게든 README.md 에 작성했던 기능 구현 목록 순으로 처리하고 싶었기 때문에 나름 나의 규칙을 지키면서 진행했다.

1주차 미션을 진행하면서 잘했던 점을 꼽자면 ‘계획대로 진행된 커밋’“기능 별 메소드 분리” 였다. README.md 에 작성한 구현 목록을 따라 구현하니 다음에 할일은 무엇이고, 일의 진행도가 체감되어 좋았던 것 같다. 또한, 기능 별로 메서드를 작게 분리하니까 재사용성도 좋아졌고 가독성 또한 좋아져 코드들이 읽기 쉬워졌다.

그리고 궁금했던 점 또한 있다. 기능 별로 메소드를 분리하면서 private 메서드와 public 메서드들로 나누어졌는데 private 메서드의 경우 테스트가 어려운 점이 있었다. 이 경우 보통은 public 메서드를 통해 private 메서드를 간접 테스트 하거나 아니면 애초에 기능들을 클래스로 나누면 편하다고 한다. ‘간접 테스트’ 라는 말이 명확하게 다가오진 않았지만, public 메서드의 동작을 통해 private 메서드가 잘 작동하는지 간접 확인 한다는 말로 이해했다. 해당 부분은 좀 더 공부해야할 듯 하다.

아쉬웠던 점은 클래스 별 기능 분리를 하지 못했던 점이었다. 당시 미션을 진행하던 내 생각으로는 해당 미션이 큰 프로그램이 아닐 뿐더러 클래스별로 기능을 나누는 것은 오히려 복잡성을 증가시킨다고 생각했다. 어쩌면 클래스 분리가 복잡성을 증가시키는 것이 아니라 내가 복잡해질까봐 였을지도 모르겠다. 그래서 다음 2주차 미션에서는 한번 적용을 시켜볼 생각이다.