본문 바로가기

기타45

TDD 스터디 #2 - 화폐 예제 (다중 통화 지원하기) 지난 포스트에서는 저자와 역자의 말을 읽고, 테스트를 진행할 수 있는 환경을 구성해 보았습니다. 이제부터는 책을 읽으며 본격적으로 흐름을 따라가 보겠습니다. 책에서 마주하는 첫 번째 상황은 다중 통화를 지원하는 Money 객체를 구성하는 예제입니다. 통화 단위 추가하기 기존의 Money 객체는 화폐의 단위로 달러(USD)를 사용하였습니다. 그러나 사용자의 필요에 의해서 스위스 프랑(CHF)을 추가로 지원해야 했는데요, 이렇게 새로운 단위가 추가되는 상황이라면 어떤 기능들이 더 필요할까요? 먼저 필요한 기능들을 리스트업 하는 것부터 시작합니다. 필요한 기능 다른 통화끼리의 연산이 가능해야한다. 하나의 통화 사이의 연산이 가능해야한다. 이 기능을 테스트 할 수 있는 명제로 나타내면 다음과 같겠네요. 통과해야.. 2023. 7. 2.
TDD 스터디 #1 - 역·저자의 글, 테스트 준비 이 글은 동아리원들과 Test-Driven Development : By Example 을 함께 읽고 나눈 의견들과, 책의 내용들을 보며 개인적으로 정리한 글입니다. 테스트는 쉽지 않습니다. 좋은 테스트를 작성하는 것은 더욱 그렇습니다. 때문에 이번 TDD 북스터디를 통해 테스트를 어떻게 작성하면 좋을지에 대한 인사이트를 얻고, TDD를 잘 활용하는 방법에 대해 의견을 나누며 공부해보았습니다. 이 글은 책과 스터디원들의 의견들을 바탕으로, 개인의 생각을 정리한 글입니다. 기본적으로는 제가 책을 이해한 바에 따라 작성하기 때문에, 실제로 사용되지 않는 비공식적인 용어들이 사용될 수 있습니다. (주로 모호한 상황에서 등장할 것으로 보이는데, 그를 칭하는 명확한 단어가 있다면 댓글로 알려주시면 감사하겠습니다... 2023. 6. 28.
TDD 스터디 #0 - 스터디에 들어가며 오랜만에 작성하는 북스터디 포스팅입니다. 지난 리팩토링 포스팅 이후로도 꾸준히 진행되고 있던 북스터디가 어느덧 리스트에 있던 모든 책을 함께 읽었고, 얼마 전부터는 한 바퀴를 돌아 2회독으로 접어들었습니다. 그러던 중 드디어 테스트 주도 개발 책을 다시 읽을 차례가 되었는데, 정말 좋은 내용과 인사이트를 가진 책임에도 불구하고 초회독 당시의 역량 부족으로 인해 블로그에 정리하지 못했다는 사실을 문득 깨달았습니다. 그렇지 않아도 내내 아쉬움이 남던 차였는데, 2회독에 접어들면서 이전과 비교할 수 없이 수월하게 읽히는 책을 보고 스스로 어느정도 준비가 되었다는 생각이 들어 이렇게 TDD 글을 작성하고 있습니다. 2년동안 열심히 작성하던 테스트들이 머릿속을 스쳐가는걸 보면 마냥 놀지는 않았던것 같네요 :) 물.. 2023. 6. 17.
git에 파일을 추가할 수 없을때 (fatal: adding files failed) 문제 상황 사이드 프로젝트를 진행하다가, git에 파일이 추가되지 않는 현상을 발견했습니다. error: 'backend/' does not have a commit checked out fatal: adding files failed 해당 오류는 폴더 내부에 또 다른 .git 폴더가 존재하기 때문에 발생하는 오류인데, 새롭게 추가한 backend/ 폴더 내부에 .git 폴더가 생성되어 있어서 추가되지 않았습니다. 해결 방법은 단순히 문제가 생긴 디렉토리에 있는 .git 폴더를 지우면 됩니다. 사실 프로젝트 파일을 직접 하나하나 구성한다면 맞닥뜨릴 일이 없는 오류이지만, create-react-app 이나 이번에 제가 사용한 @nestjs/cli의 nest new project 처럼 초기 구성을 대신 해.. 2023. 2. 19.
Github pages를 이용해 정적 페이지 배포하기 이 글은 "TCP 웹 프론트 스터디" 의 안내를 위해 작성되었습니다. github는 각각의 레포지토리마다 github pages를 통해 정적 페이지를 배포할 수 있는 기능을 지원하고 있습니다. 이번 포스팅에서는 별도의 라이브러리 없이 간단히 정적 페이지를 배포하는 방법을 알아보겠습니다. 정적 페이지 준비하기 "TCP 웹 프론트 스터디원"은 이미 준비되어 있는 상태이니 지금 과정은 건너뛰어도 괜찮습니다. 배포를 진행하기 전, 먼저 배포할 정적 페이지가 준비되어 있어야 합니다. 정적 페이지란 저장된 그대로 사용자에게 내용을 표시하는 말합니다. 흔히 많이 사용하는 리액트를 예시로 들면, 단순히 개발 단계에서 실행시켜 보는 경우에는 우리가 원하는 정적 페이지라고 하기 어렵습니다. 정확히는 정적 페이지를 서빙하고.. 2023. 2. 3.
객체 지향이란 대체 뭘까? 객체 지향은 현대 프로그래밍의 역사에서 빼놓을 수 없는 중요한 패러다임입니다. 몇 십 년 전부터 많은 개발자들은 객체 지향이라는 개념을 기반으로 프로그래밍을 해왔고, 그 흐름이 지금까지 이어져서 하나의 성숙한 패러다임으로 자리를 잡은지 오래입니다. 실제로 적지않은 대학교의 컴퓨터공학 커리큘럼에서도 객체 지향론, 또는 객체 지향 프로그래밍등의 과목은 어렵지 않게 찾아볼 수 있습니다. 이렇게나 역사도 깊고 유명한 개념이지만, 막상 "객체 지향이 무엇인가요?"라는 질문을 받으면, 쉽게 대답하기 어려운 주제이기도 합니다. 돌이켜보면 우리가 처음 객체 지향다운 코드를 작성한다고 했을 때, 객체 지향의 개념을 먼저 공부하고 실제 문제에 적용해서 만들어내는 것은 나중 일이었습니다. 그보다는 숱하게 참고해왔던, 객체 .. 2023. 1. 25.