Facts (사실, 객관)

  1. 테스트 주도 개발 공부
  2. 과제 코드 수정

Feelings (느낌, 주관)

Findings (배운 점)

  1. 몇 가지 간단한 함수(피보나치, 이진탐색) 등을 남에게 설명한다고 생각하면서 여러번 반복해서 짜보면서 테스트 주도 개발 이해도를 높였다.
  2. 특히 console.assert를 사용하는 법을 익혔는데, 테스트를 작성이 곧 assertion 작성이지만 조금 느낌이 달랐다. console.assert는 리팩터링을 읽으면서 알게되었는데, 저자가 실수를 줄이기 위해 사용한다고 해서 따라해봤다. 이진탐색을 구현하면서 mid를 선언할 때 다음과 같이 했다.
    const mid = (from + to ) / 2;
    console.assert(Number.isInteger(mid), mid);
    console.assert(from <= to, from, to)
    

    이 두가지 단언은 정말 큰 도움이 되었는데,

    • 그동안 C++로만 알고리즘공부를 해와서 당연히 (0 + 1) / 2 = 0일 줄 알았는데 아니었다. parseInt를 해줘야했다. 첫번째 어서션이 다음과 같이 알려줘서 실수를 바로 인지할 수 있었다. AssertionError [ERR_ASSERTION]: 0.5
    • 테스트가 터질 때 두번째 어서션이 터진 걸 보고 if(from > to) return false를 바로 작성할 수 있었다.

테스트가 곧 어서션이지만, 당장 테스트케이스로 작성할 필요는 없는 것 같은 사소한(?) 것들은 console.assert로 작성하는 것이 매우 좋을 것 같아 계속 이렇게 할것이다.

Affirmation (자기 선언)

내일은 집에서 공부해야하는데 정확한 시간계획을 바탕으로 많이 학습할 것이다.