회사에서 지난 일주일 간 파일첨부와 CRUD(Create, Read, Update, Delete)를 구현한 게시판을 만들어보라는 과제를 받고 오늘 사수님과 선배개발자분들에게 코드리뷰를 받은 내용을 정리하는 글입니다.

회사에서 처음 받은 과제

일주일전에 PM님께서 파일첨부가 가능한 게시판을 만들어보라고 하셨다. 그래서 평소 코딩하던 것처럼(취업하기전에 혼자서 개발하는 것 처럼) 아무런 계획이나 문서작업 없이 개발을 하였다. 그때는 그래도 될줄 알았다 ㅜ. 게시판이니 별거 없겠지.. 하면서..

그렇게 Front는 Vue.js, Back은 Django, DB는 MySQL 로 게시판을 만들기 시작했다.


엉성한 나의 게시판

그렇게 두서없이 개발하기 시작하여 어느정도까지는 개발을 했으나, 에러와 기능등을 해결하지 못해 제대로된 게시판을 구현하지 못했다…

  • 라우팅 에러 : 게시판 상세페이지에서 댓글을 작성한 후, 작성한 댓글을 볼 수 있도록 라우팅 처리를 했는데 중첩라우팅 에러가 발생하여 해결하지 못했다.
  • 수정, 삭제 기능 : 게시판 Create, Read만 구현하고 게시판 수정과 삭제기능을 구현하지 못했다.
  • 파일 다운로드 기능 : 파일첨부만 기능을 구현했고, 상세 게시판에서 파일 다운로드 기능을 구현하지 못했다.

코드 리뷰

위의 사항 뿐만 아니라 내가 염두에 두지 못한 것들 신경쓰지 않은 것들이 엄청 많았다.

1. 프로세스 플로어

  • 프로세스 흐름 그려보기 (습관 드리기)

2. SQL

  • 다른사람들이 보기 좋게 Query 작성
  • Recursive with : Depth에 따른 조회
  • 트랜잭션을 통한 Query

3. DB 설계 (표준화, 정형화)

  • 모든테이블의 PK는 고유해야됨 (user_id는 모든 테이블에서 고유한 id여야됨 - 문서 찾아봐야됨)
  • 대댓글 테이블 x (대댓글 depth가 깊어질 수록 테이블도 증가해야되기 때문)

4. 시큐어 코딩

  • 클라이언트 인풋값 확인 → 서버에서 인풋값 확인 → DB Query 넣기 다시한번 확인
    • 클라이언트와 서버 인풋값 생각하기 (앞뒤 공백 x, 유효한 값인지 등등..)
  • url , password 등 암호화

5. 에러 핸들링

  • 분기 나눠서 코드 작성 (모듈화, 자동화 할수 있도록) - 유지보수, 확장성
  • 쿼리 뿐만 아니라 코드에서도 try except 문을 활용하여 에러 핸들링

메모

  • 스케쥴 관리(데드라인 맞출 것 - 쉬는날 포함하지 않을 것 !) : 여기는 학교가 아니다 내가 하는일에 대해 전문성과 책임감을 가지고 일할 것

후기

이테까지 안일하게 개발을 해왔던 나의 개발방식을 버리고 전문성과 책임감을 가지고 개발에 임해야겠다는 태도를 배운 것 같고 코더가 아니라 개발자로서 일을 하기 위해 쓴 보약을 먹은 느낌이다.

오늘 받은 피드백을 가지고 게시판을 다시한번 만들어보고 이전보다 낫은 개발자가 되어야겠다 다짐해본다.