[
10월 22일~23일 (화,수)
수요일 저녁에 데이터 통신 시험이 있어서 이날은 미션 확인만 하고 시험 공부를 하였다.
10월 24일 (목)
오늘은 우선 요구사항들을 분석하고 1주차 공통 피드백을 살펴봤다.
🚀오늘 한 작업
공통 피드백
다양한 공통 피드백 사항들이 있었지만 그중 가장 나에게 유익했던 것은 추가 학습 자료로 주어진 영상 자료였다. 이 영상은 1주차 미션이었던 문자열 계산기를 구현하는데 요구사항을 어떻게 구현하는지를 볼 수 있어서 좋았다.
특히 나에 경우 1주차 글에도 적었지만 자꾸 굵직한 흐름을 먼저 구현하지 않고, 자꾸 가지를 구현하려고 했다. 그래서 속도도 너무 느리기도 했고, 나중에 매인 흐름을 이어가기에도 너무 힘들었다. 근데 이 피드백 영상에서는 이미 주어진 요구사항들을 천천히 해결해 나가면서 그 과정에서 이 방법이 타당한가 왜 그렇게 생각하는 가를 스스로에게 질문하면서 적절한 선택을 해나가는 것이 인상깊었다.
요구사항 분석
앞에서 적은 것처럼 너무 딥하게 생각하지 않고 일단 주어진 요구사항에 맞는 돌아가는 코드를 만들보자 라고 생각을 했다.
1 |
|
대충 요런 식이었다. 이런식으로 결과가 나오는 코드를 작성해보니 어떤 순서로 코드를 작성하면 좋을지 눈에 들어왔다. (하지만 이렇게 하면 너무 속도가 느리다.. 실전에서는 이런식으로 하는 건 비 효율적이라 생각이든다. 연습용)
🥲공부 할 내용
- java8
-
책으로 공부를 해도 실제로 쓰려니 사례들을 적용하기 힘들어서 영상 자료들로 다시 공부해보려고 한다.
2주차 회고
-
이번 주차는 아주 바빴다. 학교시험이 연달아 있어서 매일 회고를 못했다. 그래도 코드를 짤 때 만큼은 열심히 공부를 했고 어느정도 감을 잡은 것 같아 기분 좋은 주차였다.
이번 과제에서는 특히 각 클래스 별 역할과 흐름을 중심으로 읽기 좋은 코드를 작성하려고 많은 노력을 했다.
PR link
Controller
프로그램의 전반적인 진행 흐름을 제어하는 역할을 한다.
- CarRacingController
- 전체 게임 흐름을 제어한다.
1 |
|
View
컨트롤러로부터 데이터를 넘겨받아 출력하는 OutputView, 사용자로 부터 데이터를 입력 받아 컨트롤러로 넘기는 InputView
Model
상태를 변경 관리 조회를 담당하는 역할을 한다. - Car - 차량의 대한 정보와 상태를 변경 조회 하는 역할을 맡았다. - Cars - 차량들의 리스트를 가지고 있는 일급 컬렉션으로 차량들의 상태를 변경 조회 하는 역할을 맡았다 - CarRacingGame - 차량들과 NumberGenrator와 rounds의 정보를 가지고 있어 레이싱 게임 자체를 관리하는 역할을 맡았다
코드리뷰로 공부해본것들
이번 주차는 감사하게 많은 분들의(@SeoMoonk, @mingking2, @holyPigeon, @WooyoungKwon, @LSBsity, @StoneCAU) 리뷰를 받을 수 있었고 나도 많은 리뷰를 진행했다.
1. Comparable<>의 사용
우선 이번 과제에서 차량들 중 가장 position이 큰 차량 객체를 얻어 우승자들을 가려내는 코드를 구현할 때 Comparable을 사용했다
1 |
|
우선 어떤 상황에 사용할 수 있을까?
어떤 객체의 대소관계를 비교 할 필요가 있을 때
1 |
|
위 코드에서 자동차의 position을 기준으로 대소관계를 비교할 필요가 있었다.
사용 방법
1 |
|
여기서 comparTo() 의 매개변수로 들어오는 car의 position과 현재 나의 position을 비교를 한다.
만약 내가 더 크다면 양수를 같다면 0을 매개변수로 들어오는 car의 값이 더 크다면 음수를 반환하고 이것이 비교의 기준이 된다.
2. record
dto에 record를 사용했다.
1 |
|
record란 불변한 데이터를 표현하기 위한 간결하게 객체를 생성할 수 있도록 하는 클래스인데
특징으로는 불변성
- 한번 생성되면 수정이 될 수 없다는 점 필드 암시적 정의
public record CarDto(String name, int position)
- 이렇게만 적어도 필드가 자동으로 생성된다 getter, equals(), hashCode(), toString() 자동생성
3주차도 많은 것을 배우고 나가야겠다 ㅎㅎㅎ