[우아한 테크코스 6기 프리코스] 1주차 회고록

어느덧 우테코 프리코스 1주차가 끝이났습니다. 방금전에 과제 제출을 끝마쳤고, 테스트까지 통과했네요. 뭔가 이렇게 요구사항이 내려오고, 그걸 스스로 해결해 나가는게 정말 재밌네요..! 2주차가 기대됩니다 🤣

1주 밖에 되지 않았는데 벌써 많은 것들을 배운 것 같아요. 특히나 이렇게 느껴지는 이유는 코드를 짜는 태도가 조금 바뀐 것 같아서 더 그런 느낌이 드네요. 혼자서 개발할 때와 확실히 커뮤니티를 통해 많은 분들과 소통하며 공부하는 것에 큰 차이가 있다는 걸 느껴요.

우아한 테크코스 커뮤니티를 통해 많은 분들의 열정 담긴 지식공유를 통해 정말 정말 많이 성장했어요! 지금은 비록 혼자서 공부하는 입장이지만, 나중에 회사에 쥐직하거나, 팀 프로젝트를 만들어 나가는 상황에서 필요한 역량들에 대해 배웠던 것 같아요.

그리고 이런 부분들을 익히기 위해 스스로 공부한 내용을 정리해보려 합니다!

객체 지향 프로그래밍

일단 객체 지향이라는 것 자체가 자바스크립트와는 관련이 없는 내용인줄 알았어요. 그런데 주어진 과제의 메인 파일에 떡 하니 있는 ‘클래스’라는 녀석을 발견하고 말았죠. ‘클래스 써본적 없는데?’ 그리고 프리코스 커뮤니티를 통해 ‘객체 지향’에 대해서 공부해야 겠다고 생각했죠.

객체는 동작을 공개하고 자료를 숨긴다. 그래서 기존 동작을 변경하지 않으면서 새 객체 타입을 추가하기는 쉬운 반면, 기존 객체에 새 동작을 추가하기는 어렵다. 자료 구조는 별다른 동작 없이 자료를 노출한다. 그래서 기존 자료 구조에 새 동작을 추가하기는 쉬우나, 기존 함수에 새 자료 구조를 추가하기는 어렵다. 새로운 자료 타입을 추가하는 유연성이 필요하다면 객체를, 새로운 동작을 추가하는 유연성이 필요하다면 자료 구조와 절차적인 코드가 더 적합하다.

이번에 읽고 있는 클린코드에 나오는 내용중 하나에요. ‘객체 지향’과 ‘절차 지향’의 차이점을 설명하고, 또 큰 프로그래밍일 수록 ‘객체 지향 프로그래밍’을 해야하는 이유에 대해서 명확히 알 수 있었어요. 이 부분을 공부마혀 정리한 내용을 아래 링크로 첨부하겠습니다!

 

[개발 상식] 객체지향(OOP) vs 절차지향(PP) with JS

이전에 객체지향과 절차지향에 대해서 공부했었는데, 클린 코드(로버트 C 마틴) 책 6장에서 다뤄지는 내용을 충분히 이해하고자 !! 다시한번!! 중요한 개념으로 생각되기에! 포스팅 해봅니다!!!

lurgi.tistory.com

TDD

TDD 정말 정말 많이 들어봤어요. 너무나 중요하다고 다들 말씀하시더라구요. 그런데 저는 들어만 봤습니다🤣 jest도 공부하긴 했지만, 실질적으로 써본적은 없네요..

사실 TDD에 대한 내용은 얼핏 알지만, 필요성이 체감된 적은 없었어요. 그런게 있구나 하고 넘어갔죠. 그런데 프리코스에서 접한 테스트 주도 개발(TDD)은 뭐랄까.. 개발자로써의 자세를 고쳐앉은 느낌을 받았어요.

지금까지 스스로 어떤 서비스를 만들어보며 공부할 때, 항상 체계적이지 못한 느낌을 받았어요. 예를들어 ‘점심을 추천해주는 서비스’를 개발한다고 해볼께요. 저는 우선적으로 ‘점심 추천 기능’을 구현하고, 이후 끊임없이 리팩터링을 할 거에요. 그런데 저는 여기서 항상 문제가 있었죠. 리팩터링 과정에서 기능에서 버그가 일어나고, 이를 고치기 위해서 많은 비용을 들인다는 것이었어요.

프리코스에 참여하기 이전에는 이것이 당연한 것인줄 알았죠. “기능 구현이 우선되고 이후에 리팩터링을 하라”, “기능 구현보다 유지보수가 훨씬 어렵다” 는 말을 수 없이 들었기 때문에, 리팩터링 하는 과정이 어려운게 당연하다고 생각했죠. 그런데.. TDD자체가 이런 문제들을 한번에 해결해줄 수 있는 키라는 것을 이제 알게 되었어요. TDD가 단순히 테스트를 하는 것이 아닌, 시스템을 만들어 나가는 데 도움을 주는 체계라는 걸 알게 되었죠.

TDD를 ‘점심을 추천해주는 서비스’에 적용한다면 어떻게 될까요? 개발 전부터 고민을 하기 시작할 거에요. 무작정 코드부터 짜는게 아닌, 서비스를 개발하기 위해서 필요한 기능들에 대해 정리할 것이고, 이 기능들이 잘 작동하는지 테스트를 하는 게 우선이 될 거에요. 이렇게 개발된 기능들은 재사용할 수도 있고, 새로운 기능을 추가하기도 정말 편하겠죠.

TDD의 원칙!

  1. 실패하는 단위 테스트 작성, 실제 코드를 작성하지 않는다.
  2. 실패하는 테스트를 통과할 정도로 실제 코드를 작성.

아무튼

두서없이 작성한 내용이라 미흡한 부분은 있을 것 같지만.. 요정도로 회고를 끝내도록 하겠습니다.

1주차가 무사히 마무리 된 것 같네요. 앞으로도 프리코스를 통해 더욱 많은 것들을 배울 수 있으면 좋겠습니다.

 

아래는 1주차 미션의 깃허브 입니다!

 

GitHub - lurgi/javascript-baseball-6: 1주차 미션

1주차 미션. Contribute to lurgi/javascript-baseball-6 development by creating an account on GitHub.

github.com