우아한테크코스를 시작한지 벌써 1달이 됐습니다! 어느새 과정 10%를 지나고 있네요! 1레벨의 절반이 지났고, 자동차 경주와 로또 미션을 진행했습니다. 지난 두 가지 미션에서 배운 것들을 요약해봅니다. 🏎️ 자동차 경주 - TDD https://github.com/woowacourse/java-racingcar/tree/hj-rich 제목에서 알 수 있듯, 자동차 경주는 TDD에 익숙해지는 과정입니다. 우테코에서 처음으로 하게되는 미션이자, 첫 페어 프로그래밍을 경험하는 미션이기도 했어요. 그리고 본격적으로 TDD를 처음으로 경험하는 시간이기도 했습니다. 간단히 돌아보자면.. 미션 제목대로 TDD에 상당히 많이 익숙해지는 시간이었던 것 같아요. 요구사항 분석 -> 도메인을 설계 -> 테스트코드 작성 ->..
방어적 복사, unmodifiable, 불변... 너무 어려워서 정리해봅니다! 생성자의 파라미터로 리스트를 받는다면❓ 루피로부터 생성자 내부 검증 및 할당 과정에 대해 피드백을 받았습니다! 실은 피드백을 받았던 당시에는 루피의 이야기가 어떤 의미인지 이해하지 못했어요. 리스트를 선언하고, 그걸 생성자에 전달한 이후에, 생성자에 전달했던 스코프에서 리스트를 변경시킬 경우, unmodifiableList로 할당한 리스트에도 변경이 적용됩니다. 이 내용을 알지 못했어요. 사실 이것만 모르던 게 아니라, 그래서 여러가지 리스트의 복사에 대해 한 번 정리해보기로 했습니다.! 1. = anotherList; 완전히 동일한 컬렉션에 대해 참조변수를 하나 더 만드는 작업입니다. List original = new Ar..
사실 이 모든 시작은 IntStream이었습니다. 전통적 for loop 가 IntStream 보다 가독성도 좋고 성능도 더 뛰어날 거라고 생각해서 실험을 해보게 되었는데 그만... 😡 for loop가 근본이라구우!! 사람은 자기가 먼저 알고 있던 정보를 더 신뢰하고자 하는 경향이 있다고 합니다... 그래서 for-loop를 IntStream 보다 위에 보여드립니다 흐흐흐.. List lottoNumbersWithForLoop = new ArrayList(); for (int i = 1; i { List lottoNumbersWithForLoop = new ArrayList(); for (int i = 1; i { return IntStream.rangeClosed(1, 46) .boxed() .col..
우아한테크코스 레벨 1, 로또 자동 미션 진행중이에요. 각 등수별 당첨 횟수를 집계한 데이터를 어떻게 전달해야할까... 이 부분이 가장 고민이 됐었어요. 로또 당첨 결과의 형태 View에 전달될 DTO의 필드는 어떻게 구성할 것인가? { "winTimesByRank" : { "first": 0, "second": 0, "third": 2, "fourth": 3, "fifth": 5 }, "rateOfReturn": 1.05 } 웹 환경에서 로또 당첨 결과를 반환하는 API를 만든다고 가정하고, 어떻게 구성하면 API 사용자 입장에서 사용하기 편할까 고민해봤습니다. 최종적으로 위 형태로 반환을 하는 게 좋다고 판단했습니다. 각 등수별 당첨 횟수에 직접 접근이 가능하다는 점, 현재 비즈니스 필요에만 집중한다..
로또 미션에서 만난 페어와 오프라인에서 만났습니다! 실제 코딩한 시간은 5시간 정도 될 것 같아요. 좋은 카페에서 좋은 커피, 좋은 사람과 함께 즐겁게 코딩했습니다. 이럴 수가 있나 싶을 정도로.. 모든 게 저와 잘 맞는 페어였어요. 원래 계획은 좀 안 맞는 페어를 만나서 극뽁~ 해보는 연습을 하고 싶기도 했는데 ㅋㅋㅋ 더 이상 맞을 수가 있나 싶을 정도로... 너무 모든 면에서 잘 맞아서 참;;; 편했습니다. 난이도가 비교적 낮은 편에 속하는 자동차 경주 미션을 통해서도 배울게 굉장히 많았는데.. 로또 진행 중에는 어떻게 처리해야할까 고민되는 지점이 좀 있었고요, 그만큼 공부할 게 많은 것 같습니다. 자동차 경주 때 보다 더 많이 성장할 것 같아요! 마무리는 치맥으루다가.. (둘이서 맥주 4천이라니....