분류 전체보기192 [우아한테크코스] Lv. 1 - 6주차 회고: 마지막 과제 시작 벌써 마지막 미션이라니!! 시간 참 빠르다.레벨 1 마제막 과제, 체스 미션 시작지난 일주일은 페어와 함께 체스를 구현하는 과제를 진행했다.이전부터 체스미션의 악명은 여기저기서 들려왔기에 살짝 걱정도 됐다.게다가 3일 만에 기본적인 기능을 구현해야 했기에 시간이 너무나도 바쁘게 흘러갔다.체스 규칙을 대충만 알고있었다. 일단 규칙 공부부터 해야 했다.지난 미션에서도 느꼈지만 도메인 규칙들을 확실히 해야 다음 단계가 쉬워진다. 여기 와서 블랙잭, 체스 전문가 되어가는 중🫠체스 이동방식, 세부 규칙들을 정리하고 어떻게 구현할지를 고민해 봤다.이때까지 과정을 거쳐오면서 학습했던 내용을 적용하면 좋겠다고 생각했다. (캐싱이나 상태패턴 같은)다행히 페어와도 의견이 잘 맞아서 비교적 순조롭게 과제를 진행.. 2024. 3. 25. [JAVA] 상태 패턴(State Pattern) with BlackJack 블랙잭 게임을 구현하다보면 현재 내 상태에 따라 수익을 계산하는 방법이 결정된다.(블랙잭으로 승리하면 베팅 금액의 1.5배 받기 등) 그래서 승패를 결정하거나 수익을 결정하는 과정에서 if()절을 사용해서 조건을 확인하는 메서드가 많아졌다. 이 때 사용할 수 있는 패턴 중 하나가 '상태 패턴'이다. 처음 이 방식을 알았을 때의 신선한 충격이란🤔 그렇다면 상태 패턴이 무엇인지, 상태 패턴을 어떻게 적용할 수 있는지 알아보자. ❯ 상태 패턴(State Pattern) 객체가 상태에 따라 행위를 다르게 할 때, 상태를 객체화하여 행동을 변경(지정)할 수 있도록 하는 행동 디자인 패턴이다. 구현 방식을 간단히 설명하면 아래와 같다. 상태를 인터페이스로 캡슐화 한다. 세부 상태는 클래스로 표현한다... 2024. 3. 19. [우아한테크코스] Lv. 1 - 5주차 회고: 블랙잭 미션 블랙잭 게임의 2단계 미션을 구현하는 한 주였다. 수업을 통해 새로 배운 내용, 리뷰어를 통해 새로 접한 내용들을 코드에 반영해 보면서 학습을 진행했다. 캐싱 적용하기캐싱은 말로만 들어봤던 개념이었다. 개념적으로만 알고 있었고, 그래서 막연하게 '구현하기 어려울 것이다'라고 생각했다.그런데 막상 알아보고 코드로 구현해 보니 굉장히 간단한 개념이었다.(적어도 현재 프로젝트에서는)이번 경험을 통해 어려워 보이는 것들도 더 적극적으로 시도해봐야겠다는 생각을 했다. 상태패턴 적용하기이번 블랙잭 미션은 생각한 것보다 빠르게 진행이 됐다.리뷰어와의 코드 스타일이 맞았던 탓일까,1단계 머지도 빨리 되었고, 덕분에 2단계 구현도 빠르게 할 수 있었고, 2단계 피드백을 주고받고 머지를 눈앞에 두고 .. 2024. 3. 18. [우아한테크코스] Lv. 1 - 4주차 회고: KPT 회고 예? 벌써 한달이 지났다구요?🤔우테코 시작한지 얼마 지나지않은것같은데 벌써 4주차 회고글을 쓰고있다.매주 회고글을 쓰고있는 이유는 다음과 같다.1. 한주를 돌아보며 부족했던점, 더 해야할점, 그리고 스스로 칭찬하고싶은점 찾기2. 기록하는 습관 들이기글을 쓰기 위해 지난 일주일동안 난 무얼했는가 돌아보게된다. 주어진 미션과 기타 과제들을 하다보면(프로그래밍 말고도 할일들이 꽤나 있다!) 일주일이 너무나도 빠르게 지나가고 무엇을 하고있는지 인지하지 못한 상태로 시간이 흘러버릴때가 있다.이렇게 일주일에 한번 시간을 내서 기록하는게 스스로를 계속 돌아보는 계기가 된다.(감사하게도 월요일은 1시 시작이라 시간도 딱 좋다👍🏻)그리고 이렇게 기록하는게 꾸준함을 유지하는데 도움이 된다. 가끔은 귀찮거나 까먹을수.. 2024. 3. 11. [JAVA] 캐싱 활용하기 블랙잭 게임 구현을 하면서 '카드덱'이라는 객체를 사용하게 되었다. 나는 실제 (카지노에서의)규칙을 적용해서 여러벌의 카드덱을 사용하는 방식으로 구현했는데 그 과정에서 new Card()를 통해 계속해서 새로운 카드를 생성하는 방법을 사용했다. 그런데 리뷰어로부터 "카드가 만들어질 수 있는 경우의 수는 52개이고, 매번 새 인스턴스를 생성하는것은 낭비일 수 있다. 카드 인스턴스를 캐싱해보는건 어떨까?" 라는 피드백을 받았다. 생각해보면 new Card(3, 다이아몬드), new Card(3, 다이아몬드) 처럼 같은 카드가 발급될 경우 굳이 새로운 객체를 만들어서 넘겨줄 필요가 없다. 미리 생성되어있는 총 52개의 카드 중 하나를 선택해서 전달해주면 된다. ❯ 캐시란 무엇일까? The cache is a .. 2024. 3. 11. [JAVA] VO(Value Object) vs DTO(Data Transfer Object) with record 이번 미션에서 추가된 요구사항 중 하나가 "모든 원시 값과 문자열을 포장한다"였다. 사다리 타기 미션을 예로 들면 사다리에 필요한 참여자 이름, 결과이름(상품명), 높이를 각각 String, String, int 타입으로 받아오는데 이걸 원시값으로 사용하지 않고 Participant, Prize, Height로 포장하면 되겠다! 생각했다. 그렇게 코드 구현을 하고 비즈니스 로직을 작성했다. 로직을 수행하고 나온 결과를 출력하기 위해 view로 데이터를 전달하려는데 이건 Participant 자체를 전달해야 할까 아니면 DTO에 담아서 보내야 할까 고민이 됐다. 기존에 알고 있던 VO와 DTO의 역할을 생각하면 아래와 같이 진행되어야 한다. VO로 원시 값을 포장해서 사용하고 -> View에 값을 전하기 .. 2024. 3. 5. 이전 1 2 3 4 5 6 7 8 ··· 32 다음