본문 바로가기

🎒 Activity/우아한 테크코스 프리코스

[우아한 테크코스] 프리코스 2주차 회고

2주차 미션의 추가 요구 사항

2주차 미션이 마무리되었다. 온보딩 미션에서와는 다르게 추가적인 요구사항들이 존재했던 미션이었습니다.

추가적인 요구사항은 다음과 같습니다.

  1. indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현한다. 2까지만 허용한다.
  2. 3항 연산자를 쓰지 않는다.
  3. 함수(또는 메서드)가 한 가지 일만 하도록 최대한 작게 만들어라.
  4. JUnit 5와 AssertJ를 이용하여 본인이 정리한 기능 목록이 정상 동작함을 테스트 코드로 확인한다.
  5. 자바 코드 컨벤션을 참고하여 코드를 작성
  6. 커밋 메시지 컨벤션을 참고하여 깃허브 커밋 메시지 작성

 

 

 

구현 기능 목록 정리

이때부터 확실히 뭔가 배워간다는 것을 느꼈습니다. 1주차 때는 기능을 구현하면서 기능목록을 명세했었습니다. 하지만 이번 2주차 미션 때는 구현하고자 하는 기능들을 먼저 작성했습니다.

주로 저는 노션을 자주 사용하고, 제가 정리한 기능 목록도 노션에 먼저 기록해서 README.md 파일에 저장해서 커밋을 했습니다.

기능 구현을 시작하기 전에 기능 목록을 정리를 해보니 어떤 순서대로 구현을 해야겠고, 얼마나 작은 기능까지 나눌 수 있을까라는 고민을 많이 하게되었습니다. 그리고 이렇게 정리해둔 기능 목록에 따라서 기능 구현을 하다보니 내가 구현해야되는 기능에 대해서 더 확실히 알고 있는 상태에서 구현할 수 있었고, 개발 속도도 더 빠르게 진행되었다고 체감으로 느꼈습니다.

 

 

 

기능을 구현하면서 느꼈던 점

이번 2주차 미션에서는 자바 컨벤션 코드도 지키면서 메소드를 최대한 작게 나누어 기능을 구현하는 것에 초점을 맞추고 기능 구현을 시작했습니다.

 

메소드의 기능을 최소한(1개)으로 나누고 작업을 시작하니 신기하게 메소드 이름을 작명할 때도 이전보다 더 쉽게 작명할 수 있다는 것을 느꼈습니다. 메소드 이름은 동사로 시작하게 짓는 것이 컨벤션 내용에 있었지만, 지금까지 구현하던 메소드들은 기능이 2개 이상이었기 때문에 동사를 2개 써야돼서 메소드 이름 작명에 어려움을 느꼈던 거 같습니다. 그래서 기능을 최소한으로 나누고 보니 동사 1개만 사용해서 이름을 작명할 수 있었습니다. 하지만 아직 아쉽다고 느껴지는 것이 메소드의 기능을 표현할 적절한 동사를 찾는 것이 어려웠고, 동사 뒤에 붙는 이름을 작명하는 것이 어려웠습니다.

 

이렇게 메소드 이름을 신경쓰면서 작업함으로써 얻은 효과는 주석을 많이 줄일 수 있었습니다. 이전 미션에서는 기능을 가지고 있는 메소드 뒤에는 무조건 주석을 작성했었습니다. 이때까지만 해도 주석으로 설명을 추가해주는 것이 좋은 코드를 작성하는 방법이라고 생각했었습니다. 어떤 분의 글을 제가 읽었는데 최고의 주석은 잘 만들어진 메소드 이름이라는 글을 봤었습니다. 메소드 이름을 잘 만들어주면 쓸데없는 주석을 다 지워도 무방하다는 것을 의미합니다. 그래서 2주차 미션에서 가장 시간을 많이 썼던 것이 “메소드는 하나의 기능만을 하게 만들어라”“메소드의 이름만 봐도 어떤 기능인지 알게 만들어라” 였습니다.

 

두 번째는 이번에 추가된 요구사항 중 Test에 관련된 내용이었습니다. 단위 테스트가 중요한 이유에 대해서 찾아보고 Junit5에 관련된 내용을 공부했던 거 같습니다. 저는 이번에 리펙토링 과정에서 코드 변경이 많았었습니다. 하지만 신기하게도 코드 리펙토링을 하더라도 그 메소드의 기능은 바뀌지 않습니다. 그렇기 때문에 제대로된 테스트 코드를 작성해뒀다면 리펙토링을 한 코드도 같은 기능에 대해서 빠르게 테스트해볼 수 있었습니다. 이게 아마도 단위테스트의 맛이지 않을까 싶습니다. 초록색 글자는 언제 봐도.. 짜릿합니다.

 

 

 

 

2주차 미션을 마무리하며

이번 미션을 진행하면서 얻었던 내용을 다시 정리하면 다음과 같습니다.

  1. 기능 목록을 먼저 작성해라.
    • 오히려 개발 속도를 증가시킬 수 있다.
    • 내가 구현하고 있는 구현을 정확하게 알고 구현할 수 있다.
  2. 메소드를 최소한의 기능단위로 나누어라.
    • 메소드 이름 작명을 하기 편해진다.
    • 단위 테스트를 할 때, 메소드별로 적용시킬 수 있다.
  3. 메소드 이름과 변수 이름 작명에 힘을 쓰고, 쓸데없는 주석은 지워라.
    • 난잡한 주석을 지울 수 있고, 코드의 가독성을 높여준다.
  4. 정확한 단위 테스트 코드를 하나 만들어둬라.
    • 코드 리펙토링 후 테스트에 드는 비용(시간)을 최소화할 수 있다.

 

이 4가지에 대해서는 이제 알고 학습하기 시작했고, 앞으로 코드 개발에서 꾸준히 신경써야하는 요소들이라고 생각합니다. 다음 3주차 미션에서도 꾸준히 적용되어야 하는 사항이라고 생각하고, 프리코스가 끝나는 시점에서는 모든 요구사항들을 적용시켜 기능 구현을 할 수 있는 능력을 키우고 싶습니다. 남은 2주도 화이팅.