회고

오늘 미션은 OOP 할일 관리 프로그램을 개발하는 것이었다. Day 08에 했던 할일 관린 프로그램을 객체 지향적으로 개발해보는 것이었다. 주요 요구사항은 아래와 같다.

  • Observer 패턴 이용
  • Prototype Chain 학습 및 활용
  • async/await 이용한 동기화

Observer 패턴은 "최범균님의 객체 지향 디자인 패턴" 책을 읽으며 공부했었는데, Gitbook에 정리해놓지 않아 다른 블로그 찾으면서 다시 이해했다. 내일 정리해놔야겠다.

Prototype Chain 은 "You Don't Know Js" 책을 한 번 보면서 학습했었는데, 역시 코드를 작성해보지 않아서 구현하는데 확신이 없었다... 코드로 공부하자.

Object.assign(target, source) : mixin 방식으로 source 객체 속성을 target 객체로 복사한다.

Object.create(proto[, propertiesObject]) : 지정된 프로토타입 객체 및 속성(property)을 갖는 새 객체를 생성한다. 참고

ex) obj = Object.create(객체, {
  // foo는 정규 '값 속성'
  foo: { writable: true, configurable: true, value: 'hello' },

  // bar는 접근자(accessor, getter-및-setter) 속성
  bar: {
    configurable: false,
    get: function() { return 10; },
    set: function(value) { console.log('Setting `o.bar` to', value); }
  }

async/await는 (비동기를 값으로 다루는) Promise를 동기식으로 만드는 것으로 이해했었는데, 굳이 필요하지 않은 상황에도 불필요하게 작성하였다. 비동기 프로그래밍와 Call Stack 대한 이해가 아직 부족한 것 같다.

오늘 미션 시작 후, 설계 시간을 약 1시간 할애하였다. 설계 과정을 통해 빠른 문제 이해와 충분한 기술 스펙 학습을 가지고 개발할 수 있었다. 우선 프로그램 구조, 흐름을 파악하고 기능 목록을 나열해보았다. 큰 구조 아래, 기능을 적절히 분리했더니 구현 과정과 커밋 단위가 명확해지는 것을 알 수 있었다. async/await 를 부적절하게 사용했던 부분을 제외하면, 전체적으로 버그도 확실히 줄어든 것 같다.

이번 미션은 요구사항이 상당히 많았음에도, 적절히 기능을 구분한 덕분에 나름 빠르게 개발했던 것 같다.

미션 과제 설계과정

스크린샷 2019-07-26 오전 1.10.11.png

IMG_2241.JPG