그동안 배운 내용들을 가지고 한 주간 토이프로젝트를 진행 했다.
최대한 객체지향적인 코드를 짜고, 클래스 및 메소드 설계를 기존 List,Set,Map과 같은 API를 사용하지 않고 구현하는 것을 목표로 했다. 또한 핀테크 서비스라는 특성에 맞게 꼼꼼하게 예외처리를 하는 것을 목표로 하여 개발하였다.
스마트스토어 운영진을 위한 고객 분류 프로그램 개발
비회원, General, VIP, VVIP 4가지 등급으로 고객을 분류하는 프로그램
분류기준은 무조건 총 이용시간과 총 결제금액으로 정의하고 각 그룹이 되기 위한 최소 이용시간과 결제금액은 해당 프로그램을 사용하는 운영진에게 입력받는 형태
스마트스토어를 운영 중인 Sally는 본인이 운영 중인 스마트스토어에서 한번이라도 구매 이력이 있는 고객들의 정보를 가지고 있다고 가정
Sally가 가진 고객 정보는 다음과 같다.
Sally는 스마트스토어 총 이용시간과 결제금액에 따라 고객을 세 그룹으로 분류하고 싶다고 가정
분류기준
고객정보
고객 분류기능
예외처리
https://github.com/kiaeh2323/SmartStore
핀테크 서비스 백엔드 개발자 과정의 첫 프로젝트가 끝났다.
나름대로 자신감이 있던 상태여서 첫 프로젝트 주제가 결정되었을 때 내 생각보다 높은 수준의 프로젝트가 아니라는 생각이 들어서 약간의 실망감이 있었다.
하지만 막상 프로젝트를 시작하려고 하니 클래스 설계부터 어떤 클래스부터 만들고 어떤 기능부터 구현해야 할 지 머릿속이 복잡해졌다. 결국 클래스는 기본적으로 생성자, Getter Setter만 만들고 나머지는 기능을 구현하면서 필요하면 생성하는 것으로 했더니 수월하게 클래스 설계를 진행할 수 있었다.
이번 프로젝트에서 굉장히 신경을 많이 쓴 부분은 예외처리이다. 예외처리는 학부생때도 잘 하지 않았던 부분인데, 핀테크 서비스에서 버그는 고객의 자산 손실이라는 엄청나게 큰 피해를 가져다 줄 수 있기 때문에 예외에 대해서 굉장히 꼼꼼히 처리해야할 필요가 있었다. java에서 제공하는 몇가지 예외를 제외하고 내가 사용하기 위한 예외를 3가지 만들었고 각 기능에 맞게 예외처리를 진행했다.
프로젝트를 완성하고 난 후 이 토이프로젝트를 가볍게 여긴 것에 대해 후회했다. 단순히 기능만 놓고 보면 별거 아닌것 같지만 객체지향적으로 프로그램을 만드려고 하니 클래스를 어떻게 설계하고 클래스에서 어떤 기능을 갖게 해야할 지 많이 생각하게 되어서 꽤 복잡했고, 예외처리부분에서도 어떤 상황에 어떤 예외를 던질지 고민하고 직접 테스트를 거치며 예외처리가 잘 되는지 확인하는 과정이 굉장히 시간이 많이 걸렸다.
그래도 기능들을 모듈화해서 재사용하고, 버그가 될 수 있는 입력값들에 대해 잘 처리가 되고있는 프로그램을 보면서 뿌듯함을 느꼈다. 이번 프로젝트를 거치면서 객체지향적 코딩, 예외처리에 대해 더 깊이 알게 되어 개발자로서 더 발전했다는 것을 느낄 수 있었다.