본문 바로가기
교육 활동/TDD, Clean Code With Java 14기

TDD, Clean Code With Java 14기 3주차 회고 [2022. 04. 19 ~ 2022. 04. 25]

by WangTak 2022. 4. 25.
반응형

 

벌써 3주 차 회고를 작성할 시간이네요. 먼저 3주 차에 한 일을 정리하면 다음과 같습니다.

 

[3주 차에 한 일]

1. 첫 번째 미션인 자동차 경주 리팩토링

 - 원시 값 분리

 - getter 대신 클래스에 메시지 보내기

2. 로또 미션 갈아엎기

 - 원시 값 분리

 - getter 대신 클래스에 메시지 보내기

 - 일급 콜렉션 사용하기

3. 사다리 타기 미션 시작

 

첫 번째 미션인 자동차 경주는 끝이 났지만 리팩터링 할 부분이 있어 보여서 리팩터링을 했습니다. 두 번째 미션인 로또를 하면서 코드를 싹 한 번 갈아엎고 요구사항에 맞춰 기능을 다시 구현해보기도 하였고요, 로또 미션이 끝나지 않았지만 병렬로 미션을 진행하는 것도 추천하신다 하셔서 사다리 타기 미션도 시작했는데 이 부분에 대해서 공유하고 정리하면 좋을 거 같습니다.

 

미션을 진행하면서 저 나름대로 요구사항에 맞춰 코드도 짜고 메서드 분리 및 클래스 분리, 역할과 책임을 명확하게 나누는데 초점을 많이 맞췄습니다. 그러나 말 그대로 저 나름대로였습니다. 격주로 재성님께서 온라인 라이브 강의를 해주시는데 그 강의를 듣고 나니깐 첫 번째 미션인 자동차 경주와 두 번째 미션인 로또에서 작성했던 제 코드가 생각났습니다. 라이브 강의 중 해주시는 말씀 하나하나 모두가 공감됐습니다. 그리고 그중에서 강조해주시고 꼭 기억하라고 당부해주신 것들을 말씀드리면 다음과 같습니다.

 

1. 원시 값, 문자열을 분리 및 포장하자

2. 일급 컬렉션을 활용하자

3. getter를 사용하지 말고 클래스에 메시지를 전달하는 것을 생각하면서 코딩해보자

4. 생성자를 여러 개 만들어도 된다

5. 테스트하기 어려운 부분과 테스트하기 쉬운 부분을 분리해보자

 

강의를 해주시면서 일급 컬렉션에 대해서 설명해주셨고 이 부분을 그때 당시 진행 중이던 미션인 로또에 적용하면 좋을 거 같다고 생각이 들었습니다.

뿐만 아니라 자동차 경주 코드를 원시 값과 문자열을 포장한다던지, getter를 사용한 부분에서는 클래스에 메시지를 전달하여 해결한다던지 다양한 리팩터링 수준을 배우고 적용해봤습니다.

생성자를 다양하게 활용하는 예시도 보여주셨고 테스트하기 어려운 부분과 테스트하기 쉬운 부분의 분리를 통해 어려운 부분은 과감하게 버리고(아직 TDD 입문자에게는 어려운 부분이기 때문에) 테스트하기 쉬운 부분만 콕 집어서 TDD 사이클을 굴리면서 TDD의 맛을 느껴보라고도 말씀해주셨습니다.

 

또한, 강의 이름에 맞게 TDD 뿐만 아니라 코드를 이쁘게 짜는 다양한 방법을 알려주시는 것을 느꼈습니다. 그런 다양한 방법을 리뷰어 분들이 직접 해주시고 피드백을 반영하여 깔끔해진 코드를 몸소 체험하니깐 책 읽기나 강의만 따라 하는 다른 교육 방법보다 확실히 느끼는 것이 많고 머슬 메모리와 같이 몸에 익혀지는 거 같습니다. 물론 코드를 짜는 부분에 있어서 정답은 없기 때문에 개발자 스스로의 가치관을 가지는 것이 중요하다 생각이 되는데, 개발자 스스로의 가치관을 형성하는 데 있어서 TDD 수업은 길잡이 역할 및 든든한 지원군 역할을 해주는 거 같습니다. 3주 차를 보내면서 가장 와닿는 부분은 원시 값, 문자열을 포장하는 것이 아닐까 생각됩니다.

 

그리고 두 번째 미션인 로또가 끝이 보이고 세 번째 미션인 사다리 타기 미션을 시작하였는데 자바 8의 스트림, 람다, Optional이 주제입니다. "모던 자바 인 액션"이란 책을 공부하고 있는데 좀 많이 와닿는 측면이 없었습니다. 그래서 사다리 타기 미션을 통해서 자바 8의 기능들과 좀 친해지는 시간이 됐으면 하는 바람이 있습니다. 

 

다음 회고에는 fp에 친숙해져 있는 개발자가 되어있기를 바라면서 회고를 마무리하겠습니다.

 

반응형