오늘은 어떻게 프로젝트에 기여했나요?
Test & Fix
▷ Project, Workspace: chat 기능 테스트
- 클라이언트와 연결하여 테스트 진행 후, 에러 수정 및 코드 보완
Workspace
▷ 내가 작성한 채팅 메시지를 나 이외 다른 사람에게 보내주기 위해 함수 변경
// 기존
chatIo.to(room).emit('sendMessage', { ...chat });
// 변경
socket.broadcast.to(room).emit('sendMessage', { ...chat });
▷ 채팅방 이름 수정할 때 중복되는 이름인지 확인하는 로직 추가
▷ chat에서 이미지 업로드 기능 구현
- `sockio-file-upload`를 사용하여 구현 진행중
Project
▷ 프로젝트 생성시 기본 채팅방 `General` 추가하기
▷ project 삭제시 해당 프로젝트 내에 존재하는 채팅방 데이터도 함께 삭제하기
▷ response data format 수정(members 데이터 추가), 에러 테스트
- 클라이언트에서 400 에러가 발생
알고보니 같은 요청이 두번 들어가서 첫번째 요청에서 제대로 멤버 추가가 되고 두번째 요청에서 에러가 발생된 것이었습니다. 서버 로직은 문제 없으므로 수정하지 않기로 결정했습니다.
Middleware
▷ router에 parameter 추가 (middleware에 `projectURL`이 필요)
▷ `getMemberInfo` 함수 구현
- 프로젝트의 멤버인지 확인하는 기능을 함수로 따로 구현
- 반복되는 코드를 효율적으로 활용하기 위해 한 함수로 작성하였습니다.
▷ `projectChecker`에 `getMemberInfo` 함수 추가
- middleware 이름을 `memberChecker`에서 `projectChecker`로 변경
▷ `workspaceChecker`에 `getMemberInfo` 함수 추가
오늘의 프로젝트에서 힘든 점은 무엇인가요?
▷ 좋은 코드를 적성하고 싶습니다
기능을 구현하고 테스트까지 완료된 코드들을 작업이 끝났다고 놔두지 않고 있습니다. 이 코드들은 새로운 기능을 구현하고 테스트 및 에러 수정을 할 때 다시 전체적으로 훑어보면서 함께 점검하고 있습니다. 신기하게도 몇번이고 확인했던 코드임에도 불구하고 새로 발견되는 에러도 있고 로직이 엉망인 부분도 보여 수정할 때도 있습니다.
기능 구현하기 급급했던 예전과 달리 요즘은 어떻게 해야 더욱 코드를 효율적으로 작성할 수 있을지에 대한 고민을 하고 있습니다. 지금 코드를 유지해도 되지만 굳이 middleware에서 `getMemberInfo` 함수를 따로 만든 이유도 여기에 있습니다. 여러 middleware에서 반복되고 있는 작업이 보였고 이를 하나로 묶어서 함수로 사용할 수 있지 않을까, 라고 생각하고 실제로 만들어보았습니다. 오늘 뿐만 아니라 다른 날에 했던 socket.io 파일 분리나 router, controllers 정리 작업을 진행한 이유도 위와 같습니다. 이렇듯 여러가지를 시도해보며 코드를 효율적으로 작성하는 법, 깔끔하게 정리하는 법에 대해 계속 생각하고 실제로 해보고 있습니다.
사실 같은 코드를 여러번 봐야하는 약간은 지루한 작업이긴 하지만, 확실한건 이 작업을 계속 반복하는 과정에서 다음에 새로 코드를 작성할 때 어떤 식으로 적어야할지에 대한 틀이 잡히고 있습니다. 오늘의 나는 어제의 나보다 더 좋은 코드를 작성할 수 있게 되었습니다. 앞으로도 이런 고민들을 끊임없이 하면서 계속 성장하는 개발자가 되고 싶습니다.
내일은 프로젝트에 기여하기 위해 무엇을 해야 하나요?
▷ chat: 이미지 업로드 기능 구현
▷ chat에서 필요한 다른 기능 구현
▷ refresh token 기능 구현(새로운 access token 발급 받기)