본문 바로가기
회고

토이 프로젝트 - Smart Store

by icblue21 2022. 11. 17.
728x90

토이프로젝트 시작

그동안 배운 내용들을 가지고 한 주간 토이프로젝트를 진행 했다.

최대한 객체지향적인 코드를 짜고, 클래스 및 메소드 설계를 기존 List,Set,Map과 같은 API를 사용하지 않고 구현하는 것을 목표로 했다. 또한 핀테크 서비스라는 특성에 맞게 꼼꼼하게 예외처리를 하는 것을 목표로 하여 개발하였다.

프로젝트 주제

  • 스마트스토어 운영진을 위한 고객 분류 프로그램 개발
  • 비회원, General, VIP, VVIP 4가지 등급으로 고객을 분류하는 프로그램
  • 분류기준은 무조건 총 이용시간과 총 결제금액으로 정의하고 각 그룹이 되기 위한 최소 이용시간과 결제금액은 해당 프로그램을 사용하는 운영진에게 입력받는 형태

프로젝트 정의서

  • 스마트스토어를 운영 중인 Sally는 본인이 운영 중인 스마트스토어에서 한번이라도 구매 이력이 있는 고객들의 정보를 가지고 있다고 가정
  • Sally가 가진 고객 정보는 다음과 같다.
    • 고객 일련번호
      • 자동 생성
    • 고객 이름
      • 알파벳
      • 3글자 이상
    • 고객 아이디
      • 알파벳 / 숫자 / _ 가능
      • 5글자 ~ 12글자
      • 첫 글자로 숫자나 _가 올 순 없음
    • 고객이 스마트스토어를 이용시간
    • 고객이 스마트스토어에서 구매한 총 결제금액
  • Sally는 스마트스토어 총 이용시간과 결제금액에 따라 고객을 세 그룹으로 분류하고 싶다고 가정
    • 비회원, General, VIP, VVIP

프로젝트 요구사항

  • 분류기준
    • 고객의 분류기준을 입력할 수 있다.
    • 고객의 분류기준을 설정할 수 있다.
    • 고객의 분류기준을 수정할 수 있다.
  • 고객정보
    • 고객의 정보를 입력할 수 있다.
    • 고객의 정보를 추가할 수 있다.
    • 고객의 정보를 삭제할 수 있다.
  • 고객 분류기능
    • 분류기준에 의해 고객을 분류할 수 있다.
    • 분류기준에 의해 분류된 고객의 정보를 출력할 수 있다.
    • 분류기준에 의해 분류된 고객의 정보를 이름순으로 정렬할 수 있다.
    • 분류기준에 의해 분류된 고객의 정보를 총 이용시간 순으로 정렬할 수 있다.
    • 분류기준에 의해 분류된 고객의 정보를 총 결제금액 순으로 정렬할 수 있다.
  • 예외처리
    • 고객 분류 기준이 추가될 경우 수정된 분류기준에 의해 고객을 다시 고려할 수 있다.
    • 고객 정보가 추가되거나 삭제될 경우의 시나리오도 생기는 예외도 고려할 수 있다.
    • 배열의 저장범위를 벗어나게 되면 생기는 오류를 해결할 수 있다.

프로젝트 결과물

https://github.com/kiaeh2323/SmartStore

프로젝트 후기

핀테크 서비스 백엔드 개발자 과정의 첫 프로젝트가 끝났다.
나름대로 자신감이 있던 상태여서 첫 프로젝트 주제가 결정되었을 때 내 생각보다 높은 수준의 프로젝트가 아니라는 생각이 들어서 약간의 실망감이 있었다.

 

하지만 막상 프로젝트를 시작하려고 하니 클래스 설계부터 어떤 클래스부터 만들고 어떤 기능부터 구현해야 할 지 머릿속이 복잡해졌다. 결국 클래스는 기본적으로 생성자, Getter Setter만 만들고 나머지는 기능을 구현하면서 필요하면 생성하는 것으로 했더니 수월하게 클래스 설계를 진행할 수 있었다.

 

이번 프로젝트에서 굉장히 신경을 많이 쓴 부분은 예외처리이다. 예외처리는 학부생때도 잘 하지 않았던 부분인데, 핀테크 서비스에서 버그는 고객의 자산 손실이라는 엄청나게 큰 피해를 가져다 줄 수 있기 때문에 예외에 대해서 굉장히 꼼꼼히 처리해야할 필요가 있었다. java에서 제공하는 몇가지 예외를 제외하고 내가 사용하기 위한 예외를 3가지 만들었고 각 기능에 맞게 예외처리를 진행했다.

 

프로젝트를 완성하고 난 후 이 토이프로젝트를 가볍게 여긴 것에 대해 후회했다. 단순히 기능만 놓고 보면 별거 아닌것 같지만 객체지향적으로 프로그램을 만드려고 하니 클래스를 어떻게 설계하고 클래스에서 어떤 기능을 갖게 해야할 지 많이 생각하게 되어서 꽤 복잡했고, 예외처리부분에서도 어떤 상황에 어떤 예외를 던질지 고민하고 직접 테스트를 거치며 예외처리가 잘 되는지 확인하는 과정이 굉장히 시간이 많이 걸렸다.

 

그래도 기능들을 모듈화해서 재사용하고, 버그가 될 수 있는 입력값들에 대해 잘 처리가 되고있는 프로그램을 보면서 뿌듯함을 느꼈다. 이번 프로젝트를 거치면서 객체지향적 코딩, 예외처리에 대해 더 깊이 알게 되어 개발자로서 더 발전했다는 것을 느낄 수 있었다.

댓글