[우아한테크코스 5기] 레벨 1 - 6주차 회고

Glen·2023년 3월 19일
0

회고

목록 보기
6/25

3월 13일 월요일

오늘은 간만에 우테코를 처음 왔을 때 갔던 마제소바 맛집인 멘야하나비에 가려고 일찍 등교를 했다.
하지만 등교를 하고 나서 식당이 월요일에 문을 안연다는걸 알아버렸다.
그래서 어쩔 수 없이 장미상가에 있는 엄마밥상이라는 곳에서 점심을 먹었다.
생각보다 나쁘지 않고 특히 간장불고기가 정말 맛있었다!

아무튼 이제 점심을 먹고 블랙잭 미션도 일요일에 머지가 된 상태라 마땅히 할 게 없어 모던 자바 인 액션에서 함수형 인터페이스 부분을 다시 읽었다.
우테코에서 수행하는 미션들은 디자인 패턴을 활용하면 코드를 깔끔하게 짤 수 있다는 걸 깨닳고, 다자인 패턴을 어떻게 하면 더 효과적으로 다룰 수 있을까에 대한 해답으로 Java8 부터 새롭게 추가된 함수형 인터페이스를 활용하여 디자인 패턴을 더 효과적으로 사용해보기로 했다.
이전까지는 잘 감이 안왔던 함수형 인터페이스를 더 잘 다룰 수 있게 됬으면 좋겠다!

내일은 체스 미션이 진행되고 새로운 페어도 만날 시간이다.
또 어떤 사람을 만날지 궁금하고 기대된다.

이제 레벨1도 끝나간다.
초심을 잃지 말고 열심히 하자!

3월 14일 화요일

오늘은 새로운 페어를 만나는 날이다.
오늘 강의에선 간단한 데이터베이스 강의를 끝내고, 체스 미션이 소개되었다.
체스 미션은 무려 4단계의 과정으로 진행이 되었다.

1단계는 단순히 체스판만 출력하고
2단계는 체스판의 말을 움직이고
3단계는 체스판의 승패를 관리하고
4단계는 무려 데이터베이스를 사용하여 체스판의 상태를 저장시켜야 한다.

레벨1의 마지막 미션이라 그런지 뭔가 최종보스 느낌이라 굉장히 무서웠다.
도메인 자체도 어렵고, 체스를 한 번도 안해봐서 좀 막막했다고 해야하나 ㅋㅋ
블랙잭은 해본적이 있어 그렇게 어렵지는 않았는데..

아무튼 페어는 그레이였다.
그레이는 기존에 스프링으로 실제 서비스되는 어플리케이션을 만들고 배포해본 경험이 있는 크루였다.
당연히 자바에 대한 지식도 높았다.

그래서 그런가 뭔가 척하면 척 생각도 잘맞고 막히는 부분이 없이 술술 넘어가서 간단히 1단계는 오늘안에 마무리 할 수 있었다.

기존 미션들은 이미 익숙한 도메인이라 구현하는데 큰 고민이 없었지만
이번 체스 미션은 완전히 새로운 도메인이라 어렵지만 재밌을 것 같다.

내일은 2단계를 최대한 구현하는 쪽으로 목표를 잡아봐야겠다.

3월 15일 수요일

오늘은 오전에 4기 선배와의 수다 타임이 있어 점심부터 페어 프로그래밍을 진행했다.
그리고 어제 구상했던 도메인 중 하나인 BoardList<Square>을 필드로 가지고 있었다.
SquarePostionPiece를 가지고 있는 클래스였다.

근데 가만히 생각해보니 왜 BoardList<Square>를 가지고 있는지 의문이 들었고 그냥 Map<Position, Piece>를 가지고 있으면 Position으로 Piece를 가져오는게 더 쉽지 않을까? 라는 생각이 들었다.

이 생각을 페어인 그레이에게 말하니 자기도 똑같은 생각을 했다고 해서 정말 이번 페어는 생각이 잘 맞구나 라는 확신을 가지게 되었다.

그 뒤 Position 클래스도 체스 게임의 특성 상 8 * 8 = 64개 밖에 존재하지 않으니, 캐싱을 적용하여 성능상의 이점을 끌어올렸다.

이제 남은건 체스말의 움직임을 제어하는 것만 남았는데, 폰을 제외하고는 크게 어렵지는 않았다. 근데 폰의 움직임을 제어하는게 굉장히 복잡해서 애를 많이 먹었다.

폰은 처음 움직일 땐 2칸을 움직일 수 있고, 공격을 할땐 대각선에 있어야하며, 흰색은 위로만 갈 수 있고, 검은색은 아래로만 갈 수 있기 때문이다.
그 외 앙파상등 여러 행마법을 적용하려면 로직이 굉장히 복잡해질 것 같아 복잡한 행마법은 빼고, 기본적인 이동 규칙만 적용시켰다.

그리고 또 다른 난관에 봉착했는데, 말을 움직일 때 이동 경로에 말이 있는지도 검사를 해야했다.
이때 페어룸을 빌려 화이트보드를 이용해 생각들을 정리해보니 1시간 이내로 정답을 구할 수 있었다.

오늘은 그래서 체스말의 움직임 제어, 이동 경로 상 충돌 검증을 완성했고 내일 제출일까지 시간을 맞출 수 있을 것 같다!
내일도 열심히 해서 시간내에 제출을 완료 해야겠다.

3월 16일 목요일

드디어 오늘이 체스 미션의 제출일이다.
그래도 어제 거의 대부분 작업을 해놔서 ViewController에 관한 로직만 다듬고 마무리 하면 된다.
어제 만들었던 움직임 제어 로직을 더 간단한 방법으로 리팩터링을 진행했다.
어제는 급하게 한다고 비효율적으로 만들었는데 오늘 다시 보니 더 효율적인 방법을 찾을 수 있었다.

그리고 또 다른 문제점이 생겼는데, 큰 문제는 아니고 사용자 입력에 대한 부분이었다.
사용자 입력은 start, end, move로 총 3개의 입력에 대한 로직을 작성하면 되지만
move의 뒤에는 move a2 a4와 같이 파라미터가 뒤에 붙어있어
이에 대한 처리를 어떻게 해야하나 고민을 좀 했다.

우선 입력을 split 메서드로 List<String> 타입으로 만들어 어떻게 해결은 했는데 조금 찜찜하고,
Controller에 조건문이 계속 분기되는 경우가 생겼다.

이 부분은 추후 개선을 해보고 일단 기능적인 부분은 완성을 시켰으니 16시 정도에 제출을 완료할 수 있었다.

그리고 완료하고 알게된 사실인데 이번 체스 미션의 난이도가 높아 완성을 못한 크루들이 많아 하루가 연장 되었다고 했다...
그렇게 급하게 할 필요는 없었다는게 조금 아쉽기는 해도, 하루 일찍 한 것과 마찬가지니 시간을 벌었다고 생각했다.

시간내에 제출한 기념으로 크루들과 오늘은 술을 마시러 가기로 했다.
제출도 하고 여유도 생겨 술이 달달할 것 같다. ㅋㅋ

3월 17일 금요일

어제 기분이 좋아서 술을 너무 마셨던 것 같다.
아침에 일어나자 마자, 목이 말라 물을 마셨는데 바로 토를 했다.
그리고 또하고 또하고.. 빈속에 3~4번 정도 한 것 같다.
아무래도 어제 막걸리를 마셨는데 급하게 마셔서 체한 것 같기도 하고, 거기다 막걸리의 탄산 때문에 가스도 차서 더 그랬던 것 같다.
다시는 막걸리 안마셔야지...

아침에 겨우 지하철에 탔는데 정말 힘들어서 죽을뻔했다.
겨우 제시간에 등교한게 다행일 정도로

그래서 오늘은 그냥 가만히 있었다.
점심도 못먹고 링겔을 맞을까 생각도 했는데 점심쯤 조금 괜찮아져서 간단히 국밥을 먹고 컨디션을 조금 회복했다.

그리고 5시쯤 어제 체스 미션의 피드백이 와서 피드백을 반영하고
커맨드 패턴에 관한 피드백을 받아 커맨드 패턴을 적용시켜 봤는데
기존의 Controller에 덕지덕지 붙어있던 조건문을 전부 없앨 수 있었다!

해당 내용은 밑글에 커맨드 패턴 활용으로 조건문 없애기라는 글을 보면 될 것 같다.

여태까지 술을 마셔도 크게 숙취를 느낀적은 없어 이제 간이 망가졌나 라는 생각이 들었는데
오늘로 그 생각이 싹 사라졌다 ㅋㅋㅋ
아직 나는 건강한 것 같다.

이제 술을 좀 적당히 마시고, 마시더라도 좋은 술을 마셔야지

이번 주도 무사히 끝났다.
다음 주엔 예비군을 가게되어 금요일 회고밖에 작성을 못할 것 같다.

이번 주도 멋지게 마무리 한 것 같다.

profile
꾸준히 성장하고 싶은 사람

0개의 댓글