프리코스가 진행될수록 새로운 조건들이 붙는데 예로들면,
- 인덴트가 2를 넘지 않게 하는것
- else를 지양하는것
- 코드길이가 10을 넘지 않게 하는 것
등이 있다. 이 3개가 가장 대표적이다.
저번 미션에 콜백에 애를 먹고 어느정도 익숙해졌다고 생각이 들면 다시 새로운 것을 배울 수 있도록 난이도를 높혀버린다...ㅎ
어려워...ㅎㅎㅎ..ㅎㅎ..ㅠ
그래서 어찌저찌 또 검색해가며 처음부터 배우고자 개념을 찾기를 반복한다.
내가 모르는게 정말 많다는 사실은 매일 깨닫는다.
그나마 다행인 점은 2주차엔 무엇을 원하는지 알려주지 않아서 더 감을 잡기 어려웠고, 어려웠던 것이 콜백이기 때문이라는 것 자체를 깨닫는게 어려웠다. 검색하는 방법을 어느정도 배웠다고 생각했는데, 역시 어쭙잖은 실력이었다.
그래도 콜백을 인지해서 2주차만큼 해매지는 않았다.
내가 생각하는 3주차 포인트는 문서끼리 연결하는 방법!
나는 A파일과 B파일의 데이터를 무한의 굴레로 돌리려고 했는데, 그럼 안된다고 하더라..
하마터면 이상한 짓을 할뻔했다.
** 문서 안 데이터가 돌지 않도록 조심하기**
3주차 배운점
- 1순위는 피드백, 미션을 읽었을 때 이해되지 않는 개념, 설명, 요구사항 등을 이해하고자 함
- {A: B} 수준의 객체만 사용했기 때문에 MDN 문서의 객체 부분과 class 부분을 참고하여 객체와 class 개념을 다시 익힘
- 객체 내에 function을 만들어서 비슷한 객체에 동일한 적용을 한번에 쉽게 할 수 있다는 점을 배움(ex. Lotto.js 중 당첨번호 대조 함수)
- class의 필드, 생성자, 메서드, Public 필드, Private필드 등 개념을 처음부터 학습함
- class를 사용하지만 필드는 익숙하지 않았음. 더불어 Public 필드, Private필드 개념도 몰랐는데, 배우는 과정에서 다른 사람이 변수를 입력/변경할 때 문제상황이 생길 수 있다는 점을 알게 되었음. 이를 방지위해 setter, getter를 이용할 수 있다는 것을 배웠음.
- 도메인 로직,비지니스 로직, 서비스 로직 등을 학습
- 목적을 달성하기 위한 코딩을 할 때, 기능구현 목록을 만들기는 해도 그것이 주된 기능인지 아닌지 생각해본적이 없는데, 이를 생각해보는 계기가 됨
- {A: B} 수준의 객체만 사용했기 때문에 MDN 문서의 객체 부분과 class 부분을 참고하여 객체와 class 개념을 다시 익힘
- 저번주에 배운 부분 응용하기
- Readline, console.print 등을 저번보다 익숙하게 사용할 수 있었음
- 예외처리를 한 부분이 error가 나는지 확인하기 위해 Test를 한다는 점이 재미있었음
- 기능을 구현하며 고심한 부분
- 처음 기능구현 목록을 만들고 각 파일에 어느 기능을 넣어야 하는 지를 고민함
- Lotto.js가 랜덤숫자를 발행하는 class인지, 아니면 당첨번호를 활용하는 class로 써야하는지를 고민
- class의 기능인 동일한 형태의 객체를 여러 개 생산할 수 있다는 점에서 랜덤숫자 객체를 발행하는 class로 생각함
- 2개의 파일을 이용해 데이터, 함수를 전달하는 방법을 고민함
- Export, import, require 등을 찾아보고 간단한 변수부터, 함수, 클래스까지 전달/사용하는 연습을 함
- 로또파일과 앱파일이 단방향이 아닌 양방향으로 연결되어있을 수 있는지(데이터가 오갈 수 있는지)를 고민하다가 순환의존성에 대한 글을 읽고 단방향으로 구성하고자 함
- 두 파일이 서로를 불러오다가 예상하지 못한 오류를 만들어낼 수 있다고 느낌
- Lotto.js의 private 필드가 다른 App.js에서 보이지 않아 이를 해결하기 위해 getter를 사용함
- getter, setter를 예외처리를 위해 사용한다고 설명하는 글이 많았는데, 이런식으로 그냥 내보이기 위해 getter를 사용할 수 있음을 알게됨
- 처음 기능구현 목록을 만들고 각 파일에 어느 기능을 넣어야 하는 지를 고민함
- 느낀점
- 객체를 만들고 이용하는 데에 익숙하지 않다는 것을 많이 느낌. 그래서 랜덤숫자 객체를 만들어 그 안의 함수를 이용해 당첨결과를 내보일 수 있다는 생각을 해내는 것이 쉽지 않았음. 해당 부분에 많이 익숙해진다면 활용도가 높아질 것이라고 생각이 들음
- 더불어 변수를 만들어내고 변경하는 것이 익숙해 다른 사람이 이를 이용/변경할 때 돌발상황이 생길 수 있다는 생각을 못했는데, error처리를 하거나 setter, getter를 이용할 수 있다는 것을 배웠음
https://github.com/woowacourse-precourse/javascript-lotto/pull/53
[로또] 최수현 미션 제출합니다. by chsua · Pull Request #53 · woowacourse-precourse/javascript-lotto
github.com
참고한 사이트
- 스네이크 표기법(변수표기법): https://enjoyplaying.tistory.com/77
- class(필드): https://kephilab.tistory.com/46
- 객체: https://developer.mozilla.org/ko/docs/Learn
- 객체, 오브젝트 유튜브: https://www.youtube.com/watch?v=_DLhUBWsRtw
- class : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Classes
- 비지니스 로직이란? : https://velog.io/@eddy_song/domain-logic
- 순환의존성: https://blog.outsider.ne.kr/1283
- require: https://www.daleseo.com/js-module-require/
- getter,setter: https://think0wise.tistory.com/27
- export: https://sdass.tistory.com/3
- export/import: https://c17an.netlify.app/blog/javascript/모듈-사용하기/article/
'2022우아한형제들_우테코' 카테고리의 다른 글
[우테코] 프리코스를 마치고 코테를 준비하며 (1) | 2022.12.21 |
---|---|
[우테코] 프리코스 4주차 (0) | 2022.12.21 |
[우테코] 프리코스 2주차 (0) | 2022.12.19 |
[우테코] 프리코스 1주차 (0) | 2022.12.19 |
[우테코] 5기 지원부터 프리코스 전까지 (0) | 2022.12.19 |