우아한테크코스 우아한테크코스 레벨1 자동차 경주 미션 정리 내가 생각하기에 무분별하게 Setter를 두는 것은 해당 객체의 값을 의도하지 않은 곳에서 빈번하게 변경할 위험이 있기 때문에 자제하는 것이 좋다는 것을 생각했지만, Getter는 해당 객체의 인스턴스 변수 값을 변경하지 않기 때문에 필요한 곳에서 사용할 수 있도록 열어두어도 된다고 생각하였다. 어떤 인스턴스 변수(데이터)를 가지는 객체가 있다면 이 데이터에 대한 처리는 해당 객체의 책임이라... 자동차경주피드백레벨1우아한테크코스레벨1 우아한테크코스 레벨1 체스 미션 정리 아마 당시에 isXXX() 형태의 메소드는 어떤 기능을 수행하는 것이 아니라 '~~이니?'라고 묻는 메소드이기 때문에 제거해볼 수 있지 않을까 하는 생각에서 시작된 고민이었다고 생각된다. A. 해당 부분을 상태 안으로 넣음으로써 상태를 사용하는 곳, 즉 외부에서는 현재 어떤 상태인지를 알 필요없이 사용할 수 있게 된다. 즉 도메인에서 뷰에 의존하고 있다고 볼 수 있다. 따라서 Symbol 이... 체스피드백레벨1우아한테크코스레벨1 우아한테크코스 레벨1 블랙잭 미션 정리 DeckGenerateStrategy 인터페이스와 이를 구현하는 ShuffledDeckGenerateStrategy를 두어 덱 생성에 대한 책임을 해당 전략으로 분리할 수 있다. 예를 들어 위와 같은 코드의 경우, User 추상 클래스에 public abstract boolean isDealer();와 같은 추상메소드를 두고, 각각의 Dealer와 Player 구현체에서 그에 맞게끔 재정의 ... 블랙잭피드백레벨1우아한테크코스레벨1 [우아한테크코스] 6주차 회고 블랙잭 미션 2단계 PR 을 늦게보내 아직 코드리뷰를 받지 않았지만 블랙잭 전체 피드백에 소개된 상태패턴 을 사용하였다. 블랙잭 1단계에서 플레이어(또는 딜러)가 가지는 정보가 이름, 카드, 게임 결과(승,무,패) 등이 있었고 요구사항중에 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다 가 있어서 게임 결과를 억지로 다른 클래스로 분리하였다. 어차피 모든 플레이어를 돌아가면서 확인 후... 우아한테크코스우아한테크코스 [우아한테크코스 #6] 추상화가 좋을지 판단해보자 처음에 이 두 개의 UI 영역을 하나의 클래스로 개발하였습니다. 새로운 비디오 리스트 UI 영역이 생긴다면 확장이 힘들것 같다 그래서 다음과 같이 VideoListComponent 클래스를 추상화하여 비디오 리스트 속성 별로 이를 확장하는 코드를 짜보았습니다. VideoListComponent : 이 클래스는 여러 비디오 리스트들이 공유하는 로직을 가지고 있습니다. 크게 마운트 이후 재 렌더... 우아한테크코스우아한테크코스 [우아한테크코스 #6] 네트워크 통신 테스트 요번 유튜브 미션은 다음과 같은 명세를 따릅니다. API URL을 인자로 받아 해당 API URL의 END_POINT들에만 요청을 보낼 수 있는 fetcher 모듈을 만들어 반환합니다. 이 코드들을 테스트 해봅시다 유튜브 API의 경우 일일 요청 횟수에 제한이 있기 때문에 직접 요청을 보내는 것이 아닌 유튜브 API가 반환하는 데이터와 동일한 구조를 가진 데이터를 반환하는 함수로 mockin... 우아한테크코스우아한테크코스 [우아한테크코스 4기] 프리코스 2주차 회고 - 자동차 경주 게임 같은 것을 구현하면서 점점 더 코드가 나아졌지만 그만큼 부족한 점도 많다고 느껴서 많이 최종 테스트까지 많이 준비해야 할 것 같다. 코드가 변경되야 할 때 왜 변경되는지가 다르면 다른 책임으로 볼 수 있다. 이번 미션에서 자동차는 여러 대 설정할 수 있다. 일급 컬렉션에서 모든 로직이 있다 보니 다른 사람이 코드를 보거나 수정할 일이 있어도 변경할 부분을 더 빠르게 찾고 더 명확하게 변경할 ... 우아한테크코스회고우아한테크코스 [우아한테크코스]프리코스 2주차 학습 내용 위 글에서는 커피전문점에서 커피를 주문하는 상황을 하나의 도메인으로 가정하고 설명을 하는데 이 상황을 자동차 경주 게임에 대입할 수 있다. 그런데 JS 문법을 보면 생성자 함수도 있고 클래스 문법도 있다. 그렇다는 말은 생성자 함수로 객체를 만들어 사용하는 것도 2주차 목표 중 하나인 클래스의 분리라고 할 수 있다. 그런데 생성자 함수를 통해서 객체를 생성하면 객체를 생성할 때마다 생성자 함... 우아한테크코스우아한테크코스 [우아한테크코스 4기] 최종 코딩테스트 리팩토링 최종 코딩테스트를 마치고, 마저 기능 개발 - 리팩토링을 하는 과정을 기록하고자 합니다. 프론트엔드 - 백엔드 크루원을 추가하는 함수의 중복 frontend, backend를 구분하여 함수를 두 개 작성하였는데, 이 경우 1. Crew 모델에서의 중복 제거 ❌ 변경 전 ✅ 변경 후 변경 전 코드는 함수 이름으로 어떤 크루의 리스트를 가져오는 지 알 수 있어 좋다. 이 부분은 코스와 미션을 선... 우아한테크코스배달의민족배달의민족 [우아한테크코스 4기] Level 1 9일차 회고 2단계의 주제가 MVC 패턴으로 리팩토링하라 였는데, 일단 (무늬만으로라도) MVC 패턴으로 코드를 짰기 때문에 코드 자체를 손볼 곳이 많은 것은 아닌 것 같았고, 개인적으로 이해가 가지 않는 부분에 대한 공부를 좀 하느라 코드를 치는 시간 보다는 생각하고 자료를 찾아보는 시간이 더 많았던 것 같다. 내가 짠 코드는 MVC라고 짜기는 했지만, Controller에서 멤버 변수를 가지고 있었다... level1우아한테크코스회고level1
우아한테크코스 레벨1 자동차 경주 미션 정리 내가 생각하기에 무분별하게 Setter를 두는 것은 해당 객체의 값을 의도하지 않은 곳에서 빈번하게 변경할 위험이 있기 때문에 자제하는 것이 좋다는 것을 생각했지만, Getter는 해당 객체의 인스턴스 변수 값을 변경하지 않기 때문에 필요한 곳에서 사용할 수 있도록 열어두어도 된다고 생각하였다. 어떤 인스턴스 변수(데이터)를 가지는 객체가 있다면 이 데이터에 대한 처리는 해당 객체의 책임이라... 자동차경주피드백레벨1우아한테크코스레벨1 우아한테크코스 레벨1 체스 미션 정리 아마 당시에 isXXX() 형태의 메소드는 어떤 기능을 수행하는 것이 아니라 '~~이니?'라고 묻는 메소드이기 때문에 제거해볼 수 있지 않을까 하는 생각에서 시작된 고민이었다고 생각된다. A. 해당 부분을 상태 안으로 넣음으로써 상태를 사용하는 곳, 즉 외부에서는 현재 어떤 상태인지를 알 필요없이 사용할 수 있게 된다. 즉 도메인에서 뷰에 의존하고 있다고 볼 수 있다. 따라서 Symbol 이... 체스피드백레벨1우아한테크코스레벨1 우아한테크코스 레벨1 블랙잭 미션 정리 DeckGenerateStrategy 인터페이스와 이를 구현하는 ShuffledDeckGenerateStrategy를 두어 덱 생성에 대한 책임을 해당 전략으로 분리할 수 있다. 예를 들어 위와 같은 코드의 경우, User 추상 클래스에 public abstract boolean isDealer();와 같은 추상메소드를 두고, 각각의 Dealer와 Player 구현체에서 그에 맞게끔 재정의 ... 블랙잭피드백레벨1우아한테크코스레벨1 [우아한테크코스] 6주차 회고 블랙잭 미션 2단계 PR 을 늦게보내 아직 코드리뷰를 받지 않았지만 블랙잭 전체 피드백에 소개된 상태패턴 을 사용하였다. 블랙잭 1단계에서 플레이어(또는 딜러)가 가지는 정보가 이름, 카드, 게임 결과(승,무,패) 등이 있었고 요구사항중에 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다 가 있어서 게임 결과를 억지로 다른 클래스로 분리하였다. 어차피 모든 플레이어를 돌아가면서 확인 후... 우아한테크코스우아한테크코스 [우아한테크코스 #6] 추상화가 좋을지 판단해보자 처음에 이 두 개의 UI 영역을 하나의 클래스로 개발하였습니다. 새로운 비디오 리스트 UI 영역이 생긴다면 확장이 힘들것 같다 그래서 다음과 같이 VideoListComponent 클래스를 추상화하여 비디오 리스트 속성 별로 이를 확장하는 코드를 짜보았습니다. VideoListComponent : 이 클래스는 여러 비디오 리스트들이 공유하는 로직을 가지고 있습니다. 크게 마운트 이후 재 렌더... 우아한테크코스우아한테크코스 [우아한테크코스 #6] 네트워크 통신 테스트 요번 유튜브 미션은 다음과 같은 명세를 따릅니다. API URL을 인자로 받아 해당 API URL의 END_POINT들에만 요청을 보낼 수 있는 fetcher 모듈을 만들어 반환합니다. 이 코드들을 테스트 해봅시다 유튜브 API의 경우 일일 요청 횟수에 제한이 있기 때문에 직접 요청을 보내는 것이 아닌 유튜브 API가 반환하는 데이터와 동일한 구조를 가진 데이터를 반환하는 함수로 mockin... 우아한테크코스우아한테크코스 [우아한테크코스 4기] 프리코스 2주차 회고 - 자동차 경주 게임 같은 것을 구현하면서 점점 더 코드가 나아졌지만 그만큼 부족한 점도 많다고 느껴서 많이 최종 테스트까지 많이 준비해야 할 것 같다. 코드가 변경되야 할 때 왜 변경되는지가 다르면 다른 책임으로 볼 수 있다. 이번 미션에서 자동차는 여러 대 설정할 수 있다. 일급 컬렉션에서 모든 로직이 있다 보니 다른 사람이 코드를 보거나 수정할 일이 있어도 변경할 부분을 더 빠르게 찾고 더 명확하게 변경할 ... 우아한테크코스회고우아한테크코스 [우아한테크코스]프리코스 2주차 학습 내용 위 글에서는 커피전문점에서 커피를 주문하는 상황을 하나의 도메인으로 가정하고 설명을 하는데 이 상황을 자동차 경주 게임에 대입할 수 있다. 그런데 JS 문법을 보면 생성자 함수도 있고 클래스 문법도 있다. 그렇다는 말은 생성자 함수로 객체를 만들어 사용하는 것도 2주차 목표 중 하나인 클래스의 분리라고 할 수 있다. 그런데 생성자 함수를 통해서 객체를 생성하면 객체를 생성할 때마다 생성자 함... 우아한테크코스우아한테크코스 [우아한테크코스 4기] 최종 코딩테스트 리팩토링 최종 코딩테스트를 마치고, 마저 기능 개발 - 리팩토링을 하는 과정을 기록하고자 합니다. 프론트엔드 - 백엔드 크루원을 추가하는 함수의 중복 frontend, backend를 구분하여 함수를 두 개 작성하였는데, 이 경우 1. Crew 모델에서의 중복 제거 ❌ 변경 전 ✅ 변경 후 변경 전 코드는 함수 이름으로 어떤 크루의 리스트를 가져오는 지 알 수 있어 좋다. 이 부분은 코스와 미션을 선... 우아한테크코스배달의민족배달의민족 [우아한테크코스 4기] Level 1 9일차 회고 2단계의 주제가 MVC 패턴으로 리팩토링하라 였는데, 일단 (무늬만으로라도) MVC 패턴으로 코드를 짰기 때문에 코드 자체를 손볼 곳이 많은 것은 아닌 것 같았고, 개인적으로 이해가 가지 않는 부분에 대한 공부를 좀 하느라 코드를 치는 시간 보다는 생각하고 자료를 찾아보는 시간이 더 많았던 것 같다. 내가 짠 코드는 MVC라고 짜기는 했지만, Controller에서 멤버 변수를 가지고 있었다... level1우아한테크코스회고level1