[우아한테크코스 백엔드 4기] 레벨1 - "로또" 회고

헌치·2022년 4월 15일
1

우아한테크코스

목록 보기
14/30

🔗 관련 링크

깃허브 링크
작성한 코드


⚙️ 구현 기능 목록

입력

  • 로또 구입 금액을 입력받는다.
    • [예외처리] 숫자가 아닐 경우
    • [예외처리] 1000 미만의 값일 경우
    • [예외처리] 1000으로 나누어 떨어지지 않는 값인 경우
  • 수동으로 구매할 로또 수를 입력받는다
    • [예외처리] 숫자가 아닐 경우
  • 수동,자동 로또 수들을 인스턴스로 저장한다
    • [예외처리] 로또 티켓 수가 0 이하의 수일 경우
    • [예외처리] 수동로또 수가 구매한 로또 수보다 많을 경우
  • 수동으로 구매할 로또 번호를 입력받는다
    • [예외처리] 입력 형식이 아래 예시와 같지 않은 경우
  • 구매한 로또내역을 출력한다.
    • 이전에 구매한 수동 로또번호를 포함한다

로또 진행

  • 구입 금액을 저장한다.
  • 구입 금액/ 1000 의 개수를 생성한다.
  • 결과값 개수만큼 로또를 랜덤으로 생성한다.
    • 로또 생성에는 Collections.shuffle()을 활용한다.
  • 생성된 로또마다
    • 지난주 당첨 번호와 일치하는 번호의 개수를 저장한다.
    • 보너스 볼이 존재하는지 여부를 저장한다.
    • [예외처리] 당첨 번호의 범위가 1 ~ 45를 벗어나는 경우.
    • [예외처리] 보너스 볼의 범위가 1 ~ 45를 벗어나는 경우.
  • 당첨 통계를 낸다.
    • 당첨 결과를 계산한다.
    • 총 수익률을 계산한다.

로또 통계 출력

  • 3개부터 6개까지 일치하는 로또의 개수를 출력한다.
  • 수익률과 손해여부를 출력한다.

⛳ 피드백

@사이드 피드백

1.네이밍 컨벤션

  • 웬만해선 줄여쓰지 말자

2.결합도를 낮추자

  • 추가구현한 add 메서드 도 일종의 setter이다

3.상수화

  • 상수 위치는 해당 상수가 쓰이는 곳인 편이 좋다
  • 상수는 private 접근제어자로 처리
    - Alt + Command + C 두번 누른 후 private 설정

4.검증 로직

  • validator 클래스를 따로 만들기보단,
  • 해당 검증로직이 필요한 클래스 내부에 메소드를 만들자

5.정수 인풋받을 때 주의사항

  • new Scanner().nextInt() 사용 후
  • nextline()으로 스캐너를 비워줘야 함

@DTO는 언제 사용할까?

  • View에서 도메인 로직을 호출할 가능성이 있을 때
  • 객체 자체를 넘기기보단, DTO를 넘길 수 있다
  • 이외에도 판단기준을 고민해보자!!!

@표준 예외를 사용하자

  • 기존 예외 안에서 해결 가능하다면 굳이 커스텀예외 사용 X
    - 예외 메세지로도 충분히 메세지 전달 가능!
    • 가독성도 증가
  • 커스텀 예외 언제 사용하지?
    - 예외메세지에 상세정보를 전달하고 싶을 때
    • 예외 발생 후처리가 필요할 때
    • stacTrace 간소화가 필요할 때

@상속 vs 조합

  • 이후 게시글로 작성^^

@안전하게 getter 사용하기(불변화)

  • 자료구조 리턴 시 새로 만들어 수정가능성 차단
    - copyOf() 메서드 사용하면 안전
    - 그러나 리소스 문제... 비효율적일수도...
    • 상황봐서 결정하자!
  • 자료구조 안 데이터가 primitive 타입이거나 VO인 편이 안전

@Controller 테스트 방법

  • 인수테스트를 사용하면 됨
    - ATDD
  • 지금으로선 단위테스트로 충분
  • 만약 컨트롤러에서 테스트할 부분이 많다면?
    - 해당 코드를 도메인으로 분리해야 하는 신호!

@Bipredicate 사용해보기

  • 두 인자를 받은 뒤, 특정 조건에 맞는지 확인할 수 있음
  • Rank 클래스에서 사용함
  • 이외에도 Consumer, Function 등...
    -> 이후 게시물로 작성^^

🖋 소감

첫 미션보다 수월했다. 이후 맛보게 될 지옥은 꿈에도 모른 채...
글고 로또 당첨은 꿈도 꾸지 말자

사실 레벨1 방학 기념으로 포스트를 몰아쓰고 있기 때문에
당시의 기억이 흐릿하다^^;;

확실히 기억나는건 첫 미션인 자동차경주 때보단 막막함도 덜하고
우테코에 조금 익숙해지면서 막 재미를 붙였었다.

리뷰어의 피드백도 분량이 많지 않고(1,2단계 합쳐 20개 정도)
순한맛이었기 때문에
"나, 잘하고 있을지도...?" 라며 자만했다.
나름 이런저런 질문을 할 여유도 있었다.

이땐 우테코에 인생을 갈아넣는 느낌은 아니었고
저녁 6시까지 코딩 후 퇴근 시간되면 아싸 쉬어야지 하고 쉬었던듯.
이때 레벨1 추천도서도 읽고 그랬어야 하는데ㅠㅠ

그래도 3분 컵라면 스터디 들어간 건 좋은 선택이었다.(써머 최고🥺)

profile
🌱 함께 자라는 중입니다 🚀 rerub0831@gmail.com

0개의 댓글