메모기능 피드백

권태용·2020년 9월 22일
0

FeedBack

목록 보기
1/2

메모기능을 개발하고 받은 피드를 정리해보려한다. ERP 소프트웨어에서 간단히 사용하는 메모기능이였지만 해당기능을 개발하기 위해 유저의 입장도 고려하였고 복잡하진 않지만 데이터베이스의 구조적인 고려도 할 수 있었다.

개발전 고려사항

첫 번째로 생각한 것은 메모의 사용목적이였고 두 번째로 UI.UX였다. 마지막으로 위 사항을 고려해서 가장 효율적인 데이터 구조를 잡게 되었다.

  1. 사용목적
  • 문서에 대한 간단한 기타내용을 기록하기 위해
  • 문서에 대해 여러 메모를 남기고 로그성으로 기록
  1. UI.UX
  • ERP 특성상 PC를 통해 많이 사용하기 때문에 모바일을 크게 고려하지 않아도 될 것이라 생각 되어 모달 방식을 사용하지 않았다.
  • 문서의 내용을 그대로 넣거나 메모 입력창을 모니터에서 자유롭게 이동할 수 있도록 새창 방식을 사용하였다.
  • 메모를 로그형태로 보여주기 위해 게시글 형태로 메모리스트를 보여주었고 메모 내용을 리스트에서 볼 수 있도록 전부 출력해 주었다.
  1. 데이터 구조
  • 메모의 데이터 구조는 '작성자 이름', '작성일', '내용' 이였다.
  • 위 데이터 구조에서 작성자의 이름은 다른 테이블에 저장되어 유저의 이름이 바뀔경우를 대비해서 새로 테이블을 만들어 작성자 이름을 참조할까 고민하였지만 시스템 설계상 유저의 이름은 바꿀 수 없기때문에 문서테이블 내의 json타입의 컬럼으로 저장하였다.

개발 중 고려사항

  1. 유저 고려사항

    1-1. 메모 수정중에 다시 해당 메모를 새창으로 로드하게 될 경우 작성된 내용이 사라지기 때문에 이를 방지하고자 메모 수정창이 있을경우 해당 창에 포커싱을 주는 방식을 고려하였다.

    1-2. 메모 내용은 1000자 이내이기 때문에 placeholder와 현재 입력내용의 크기를 보여주는 UI를 추가하였다.

  2. 시스템 고려사항

    2-1. 메모의 인덱스를 url 파라미터로 넘기기 때문에 혹시 모르는 사용자가 이를 변경할 경우를 대비해 IndexOutOfArray에러 처리를 추가하였다.

    2-2. javacript 코드를 임베딩 할 수 있기에 이를 검사후 제거하는 로직을 추가하였다.

    2-3. 특수기호의 경우 escape 되어 들어오기에 이를 저장시에 unescape하여 완전한 형태로 저장하고 출력시에 그대로 보여주었다.

피드백 내용

  1. 미사용 코드 제거 - 드래그 가능한 Modal방식을 테스트 하던중 추가된 라이브러리를 삭제 하지 못 했다. 이는 역 머지시에 나오는 커밋내용을 좀 더 세밀히 살펴봐야 한다.

  2. 도메인 주도 설계(Domain Driven Development) 방식의 Entity 데이터 처리 - 서비스 로직에서 Entity에 값을 할당할때 Entity의 메소드 방식으로 처리하는 스타일을 지향한다.

  3. 유저의 다중 클릭 방지 - 유저의 의도치 않는 행동으로 새창을 수십번 끄고 닫을 경우 서버의 부하가 일어난다. 나는 유저의 입장을 고려하여 새창메모에 포커싱을 주는 방식을 선택하였지만 이는 서버의 부하를 줄이는 효과도 있었다. 하지만 메모생성 버튼에 대한 처리는 없었기 때문에 버튼을 순식간에 여러번 클릭하면 클릭한 갯수만큼 생성되었다. 이것도 처리가 필요하다.(loading 창 활성화를 통해 해결)

  4. 컨트롤러 레이어에서는 서비스로직을 피하자 - 서비스 로직을 무심코 컨트롤러 단에 추가해버렸다... Think Twice, Code Once 하자

profile
개발일기장

0개의 댓글