221118 TIL 게시판 객체를 생성해 리팩터링
·
성장이야기/TIL
어제 협력에 필요한 객체의 종류와 책임, 메시지를 정리했고 오늘은 설계한 것을 바탕으로 어떻게 리팩터링 할지 고민하는데 시간을 많이 사용했다. 우선 카테고리와 게시판 객체 사이의 관계가 애매했었는데 그 이유가 게시판의 이름이 카테고리 이름이랑 동일한 역할을 한다고 생각을 했다. 왜냐하면 카테고리는 어차피 축구라는 카테고리 안에 여러 개의 게시판이 존재할 것이기 때문에 카테고리 객체가 필요한가에 대한 생각을 하게 되었다. 그래서 동료들에게 카테고리와 게시판에 대한 관계(카테고리 안에 여러 개의 게시판, 게시판 안에 여러개의 게시물)를 설명하니 카테고리가 굳이 필요 없을 것 같다는 이야기를 해줬다. 그래서 기존에 카테고리가 하던 역할(카테고리에 맞는 게시글들을 프론트 엔드로 넘겨주는 것)을 게시판이 하도록 ..
221117 TIL 객체들로 구성된 작은 세상을 만들어 보자
·
성장이야기/TIL
어제 했던 협력 설계의 잘못된 부분을 감사하게도 아샬님께서 짚어주셨다. 어제 했던 협력 설계 인데 아샬님께서는 사용자에서 뭔가가 시작되었다는 건 의인화가 충분히 이뤄지지 않았다는 신호라고 말해주셨다. 사실 어제 혼자 설계하면서도 "게시물을 작성하라"메시지를 사용자부터 시작하면 게시물뿐만 아니라 다른 모든 것들도 다 사용자부터 시작하게 될 것 같은 느낌이 들어서 이게 맞나? 라는 생각이 들어 이상함을 느꼈었다. 아샬님께서 일반적인 게시판 서비스는 게시판이 “게시물을 작성해라”를 메시지를 받는다는 말을 해주셨다. 기존에 설계한 객체에서 게시판 객체가 존재하지 않았었는데 게시판 객체를 만들어서 객사오를 참조해 새롭게 처음부터 설계해봤다. 우선 게시판을 구성하는 요소들에 대해서 고민하는 것이 좋다고 책에 나와있..
221116 TIL 협력을 설계하자
·
성장이야기/TIL
오늘은 이전에 설계했던 객체가 잘못되었다는 것을 인지하고 객체지향의 사실과 오해를 참고해서 객체를 재설계해봤다. 객사오에서는 객체지향 설계의 첫 번째 목표를 훌륭한 객체를 설계하는 것이 아니라 훌륭한 협력을 설계하는 것이라고 강조하고 있었다. 협력을 설계한다는 것은 객체가 메시지를 선택하는 것이 아닌 메시지가 객체를 선택해야 한다는 것을 의미하기 때문에 메시지를 먼저 선택 후 메시지를 수신하기에 적절한 객체를 선택해야 한다고 한다. 솔직히 글만 봐서는 잘 와닿지 않았었다. 그래서 직접 내 프로젝트에 적용해봤다. 현재 게시판에서 설계하려는 협력은 게시글을 작성하는 것인데 메시지로 작성한다면 "게시글을 작성하라"이다. 객사오에서 나오는 방법처럼 화살표를 이용해서 설계해봤다. "게시글을 작성하라" 메시지 위에..
221115 TIL 인수테스트 하면서 만난 문제
·
성장이야기/TIL
오늘은 어제 작성한 사용자 스토리를 바탕으로 인수 테스트를 다시 작성하고 코드로 옮겨서 인수 테스트를 통해 지금까지 구현한 기능을 검증하기 시작했다. 우선 로그인 기능이 구현되지 않았기 때문에 로그인이 안되었을 때의 시나리오를 제외하고는 모두 테스트하는 와중에 막히는 테스트가 있었는데 게시글 작성할 때 게시글 제목이나 내용을 입력하지 않았을 때 나오는 팝업창의 문구가 제대로 나오는지 테스트하는 부분이었다. 제목은 입력하지 않고 카테고리 선택(selectOption), 내용 작성(fillField)을 하고 등록 버튼을 클릭(click)을 하도록 인수 테스트를 작성하고 ui화면으로 검사를 하는데 카테고리 선택하고 내용 입력하고 버튼도 잘 클릭해서 "제목을 입력해주세요"라는 팝업창이 뜨는 것까지는 확인했는데 ..
221114 TIL 원칙을 위배해서는 안된다.
·
성장이야기/TIL
인수 테스트를 통해 검증하자 4주 차 스프린트 회고가 있었던 날이다. 노아님이 하나의 기능이 완성될 때마다 작성한 인수 테스트를 실행(codeceptJs)시켜 통과가 돼야 완성된 거라고 말씀을 하셨다. 그 말을 듣고 아차! 싶었다. 왜냐 나는 인수 테스트를 기획 문서에만 작성하고 작성한 인수 테스트를 코드로 옮기지 않았기 때문에 기능들을 구현해도 실행시킬 인수 테스트가 없었기 때문이다. 이는 완전히 잘못된 행동이었음을 깨닫게 되었다. 우선 노아님이 알려주신 올바른 프로젝트의 작업 순서는 아래와 같다. 1. 구현할 기능에 대해서 작성해 놓은 사용자 스토리를 바탕으로 기획 문서에 인수 테스트를 작성한다 2. 문서에 작성한 인수 테스트를 코드로 옮긴다. 3. 단위 테스트 코드를 작성하며 기능을 구현한다. 4...
메가테라 20주차 주간회고 (프로젝트 4주차 회고)
·
성장이야기/주간회고
20주 차 회고 메가 테라 20주 차를 진행하면서 있었던 일을 종합해서 회고하였습니다. 프로젝트 4주 차의 목표는 전체 게시판의 완성도를 높이고 게시판의 CRUD기능 구현하는 것과 월, 화에 아샬 님이 말씀해주신 내용을 바탕으로 controller와 service를 리팩터링 하는 것이 목표였다. 그래서 아래와 같이 작업 계획을 세웠고 작업에 대한 결과이다. 최종적으로 HOT 게시판 구현을 하지 못해서 계획했던 작업들을 모두 하지 못했기 때문에 계획한 작업을 다 하지 못한 이유에 대해서 회고를 해보려고 한다. 우연의 산물 이번 주 계획한 작업을 모두 달성하지 못한 첫 번째 이유는 컨트롤러와 서비스를 리팩터링 하는 부분에서 생각했던 것보다 수정해야 하는 부분들이 많아서 기존에 계획했던 스토리 포인트의 2배를..