221116 TIL 협력을 설계하자
·
성장이야기/TIL
오늘은 이전에 설계했던 객체가 잘못되었다는 것을 인지하고 객체지향의 사실과 오해를 참고해서 객체를 재설계해봤다. 객사오에서는 객체지향 설계의 첫 번째 목표를 훌륭한 객체를 설계하는 것이 아니라 훌륭한 협력을 설계하는 것이라고 강조하고 있었다. 협력을 설계한다는 것은 객체가 메시지를 선택하는 것이 아닌 메시지가 객체를 선택해야 한다는 것을 의미하기 때문에 메시지를 먼저 선택 후 메시지를 수신하기에 적절한 객체를 선택해야 한다고 한다. 솔직히 글만 봐서는 잘 와닿지 않았었다. 그래서 직접 내 프로젝트에 적용해봤다. 현재 게시판에서 설계하려는 협력은 게시글을 작성하는 것인데 메시지로 작성한다면 "게시글을 작성하라"이다. 객사오에서 나오는 방법처럼 화살표를 이용해서 설계해봤다. "게시글을 작성하라" 메시지 위에..
221115 TIL 인수테스트 하면서 만난 문제
·
성장이야기/TIL
오늘은 어제 작성한 사용자 스토리를 바탕으로 인수 테스트를 다시 작성하고 코드로 옮겨서 인수 테스트를 통해 지금까지 구현한 기능을 검증하기 시작했다. 우선 로그인 기능이 구현되지 않았기 때문에 로그인이 안되었을 때의 시나리오를 제외하고는 모두 테스트하는 와중에 막히는 테스트가 있었는데 게시글 작성할 때 게시글 제목이나 내용을 입력하지 않았을 때 나오는 팝업창의 문구가 제대로 나오는지 테스트하는 부분이었다. 제목은 입력하지 않고 카테고리 선택(selectOption), 내용 작성(fillField)을 하고 등록 버튼을 클릭(click)을 하도록 인수 테스트를 작성하고 ui화면으로 검사를 하는데 카테고리 선택하고 내용 입력하고 버튼도 잘 클릭해서 "제목을 입력해주세요"라는 팝업창이 뜨는 것까지는 확인했는데 ..
221114 TIL 원칙을 위배해서는 안된다.
·
성장이야기/TIL
인수 테스트를 통해 검증하자 4주 차 스프린트 회고가 있었던 날이다. 노아님이 하나의 기능이 완성될 때마다 작성한 인수 테스트를 실행(codeceptJs)시켜 통과가 돼야 완성된 거라고 말씀을 하셨다. 그 말을 듣고 아차! 싶었다. 왜냐 나는 인수 테스트를 기획 문서에만 작성하고 작성한 인수 테스트를 코드로 옮기지 않았기 때문에 기능들을 구현해도 실행시킬 인수 테스트가 없었기 때문이다. 이는 완전히 잘못된 행동이었음을 깨닫게 되었다. 우선 노아님이 알려주신 올바른 프로젝트의 작업 순서는 아래와 같다. 1. 구현할 기능에 대해서 작성해 놓은 사용자 스토리를 바탕으로 기획 문서에 인수 테스트를 작성한다 2. 문서에 작성한 인수 테스트를 코드로 옮긴다. 3. 단위 테스트 코드를 작성하며 기능을 구현한다. 4...
221113 TIL 댓글을 삭제했는데 대댓글은 왜?
·
성장이야기/TIL
댓글 삭제 기능 구현 중 대댓글과 관련된 이슈가 발생했다. 대댓글이 있는 댓글을 삭제하면 밑에 달려있던 대댓글까지 1+1 마냥 같이 삭제가 돼버리는 문제 발생한 것이다. 근데 데이터베이스를 확인해보니 댓글은 지워졌지만 대댓글은 지워지지 않았었다. 사실은 대댓글은 삭제가 된 것이 아니라 화면에 보이지 않는 것이었다. 왜냐하면 댓글이 있어야만 해당 댓글 밑에 대댓글이 보이게 해 놨기 때문이다. 댓글이 없어져 버리면 대댓글도 같이 없어져 버리는 기이한 현상이... 그래서 댓글을 삭제할 때 대댓글을 어떻게 처리해줄까 방법을 고민해봤다. 처음으로 생각해낸 방법은 댓글 삭제 시 대댓글이 있으면 대댓글이 존재하기 때문에 댓글을 삭제할 수 없다는 문구가 나오게 하는 것이었다. 두 번째 방법은 대댓글이 있는 경우에도 댓..
221112 TIL 바꿔야 할 것 같으면 바꾸자
·
성장이야기/TIL
오늘은 리팩터링은 필요하다고 느꼈을때 바로 해주는게 좋다는것을 깨달은 날이다. Post라는 게시글 세부 정보 컴포넌트를 만들면서 게시글에 필요한 정보들을 PostPage에서 Post 컴포넌트로 props를 전달해주는 구조였는데 props가 점점 쌓여 20개가 넘어가니까 리팩터링할때 엄청난 괴로움을 느꼈다. 현재 구조가 게시글 세부 페이지에 필요한 정보들을 post의 상위 컴포넌트인 PostPage에서 post의 상태를 관리하는 store를 이용해 상태들을 props로 내려주는 형태(PostPage -> Post)로 만들어져 있다. 그리고 게시글안에 댓글도 들어가는데 댓글은 별도의 컴포넌트로 만들어서 post안에 댓글 컴포넌트도 있기 때문에 최상위 컴포넌트인 PostPage에서 Post컴포넌트에 내려줘야하..
221111 TIL useForm의 onChange (feat. register)
·
성장이야기/TIL
오늘은 게시글 수정 기능 구현하다 만난 문제와 해결방법을 적어보려고 한다. 우선 게시글을 수정할때 react-hook-form의 useForm을 이용해서 form을 생성해 수정된 게시글을 제출할 생각이였다. 수정할때 요구사항으로는 수정하려는 게시글의 제목과 내용을 수정할때 수정 폼에서 내용이 이미 입력된 상태여야 했다. 그래서 input태그 안에 value를 설정하고 value안에 기존에 갖고 있던 제목과 내용을 넣어줬다. 그리고 value값을 설정해주었기 때문에 입력할때 변화가 일어나게 하려면 input태그 안에 onChange를 넣어서 글자가 바뀌면 useState를 이용해 value값을 바꾸려고 했다. 그런데 아무리 입력해도 value값이 바뀌지 않고 변화하지 않는 문제가 발생했다. 처음에는 use..