올해 초부터 이 과정이 있다는 사실은 알고 있었지만 여러가지 내가 가진 자원들의 제약들로 인해 이제서야 수강할 수 있게 되었다.
지인분이 추천해주셔서 너무너무 궁금했는데 입사한 후에 듣는 것보다 지금 취업 준비를 할 때 듣는 것이 시간적으로도 여유롭고, JavaScript에 대해서 충분히 고민해본 경험이 나중에 업무를 할 때도 강점이 될 수 있지 않을까? 하는 생각으로 고민 끝에 수강신청을 했다.
아래는 간략한 수업 내용 + 수업 도중 내가 했던 질문과 답변을 정리했다.
TDD에 대한 사고방식
TDD는 언제하는 것이 좋은가?
TDD를 하는 과정
강의 도중에
Q. 테스트코드를 작성하고 기능을 구현하는 것과 기능을 먼저 구현하고 테스트코드를 후에 작성하는 것에 어떤 차이점이 있을까? 왜 테스트코드를 먼저 작성하라고 하는 것일까?
궁금해서 여쭤봤다 🙋♀️
나말고도 같은 의문을 가지는 사람들이 있을 것 같아 아래에 답변을 공유한다.
A. 테스트코드를 먼저 짜야 테스트를 통과하기 위한 최소한의 코드 작성 범주가 명확해진다.
구현코드를 먼저 작성하면 '이것도 좀 고쳐야겠는데...? 이것도 조금 넣어야겠는데...?'
이렇게 최소한의 코드에서 벗어나면서 피드백을 받는데 까지의 시간이 더 걸릴 가능성이 높다.
테스트코드 작성하고 기능 작성하고 테스트받고 리팩토링하고 테스트받고.... 의 반복되는 과정속에 빠르게 피드백을 받아서 더 확신을 가진 상태로 코드를 작성하기 위함이다.
TDD에 관심이 있어서 예전에 따로 강의를 들어보긴 했는데 테스트코드 작성에 대한 강의들이라 크게 테스트코드의 효능(?)을 체감하지 못했는데, 1주차 과제를 하면서 굉장히 편리하다고 느꼈다.
특히 지금처럼 내가 나를 못 믿을 때 (위의 TDD를 언제하면 좋은가?
의 2번째 이유와 같다),
너무 간만에 바닐라 JS로 무언가를 구현하는 중이라 리팩토링하면서 코드를 조금만 손봐도 '요구사항이 다 정상적으로 작동하려나...? 🙄' 하고 의문이 들 때, 테스트코드는 이미 요구사항들이 동작하는지 테스트해주고 있다.
코드를 클리닝 하는 과정에 집중하자!
의도를 드러내는 네이밍
과제를 구현하면서 의도를 드러내는 네이밍을 해보려고...... 노력해봤는데
내가 작성한 코드는 객관적으로 보기가 참 힘든 것 같다 (내가 썼으니까 내가 보기엔 잘 읽힌다....ㅎㅎ....)
이래서 코드 리뷰가 필요하구나 라고 다시 한번 느꼈다! 😮💡✨