JayFreemandev / casino

객체지향적인 설계를 습관화 하기 위한 자바 프로젝트

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Casino



프로젝트 소개

재미있게 보았던 "카지노" 드라마와 객체지향 기술서적들의 예제를 이용하여 구현한 프로젝트입니다.

Casino(카지노)
Casino 프로젝트는 카지노의 기능을 구현한 프로젝트로, 칩을 추가하고 금액을 증감시키며, 딜러를 통해 칩을 교환하여 게임을 즐기는 프로젝트입니다. 객체의 책임과 역할을 나누어 객체들 사이 결합도를 낮게 유지하는 리팩토링 과정을 진행했습니다. SRP, OCP 원칙을 통해 결합도를 낮추면서 응집도에 대한 트레이드 오프를 생각하며 균형 있는 설계를 고민했습니다. 리팩토링에 중점을 두고 반복적인 if else 처리 대신 정적인 경우 Enum, 확장 가능성이 존재하는 케이스는 디자인패턴을 적용했습니다.

Comp(콤푸 입출금 내역)
Comp는 카지노 이용객의 게임 금액과 시간에 따라 포인트를 지급받아 호텔 내에서 사용 할 수 있는 마일리지입니다. 입력 파일을 분석하여 콤푸(마일리지) 기록의 합계, 월별 합계, 카테고리별 합계 등을 계산하여 내역을 분석하는 프로젝트입니다. 소프트웨어 개발원칙 중 KISS, DRY, SRP를 코드에 적용했고 Java 8의 Lambda를 활용하여 가독성을 높였습니다. 단위 테스트를 진행할 때는 직관적으로 읽기 쉽게 Given-When-Then 패턴을 적용했습니다. Getter, Setter와 메소드를 제외하고는 테스트 커버리지 목표를 70~90%로 하였습니다.

Agent(고객 관리)
Agent 프로젝트는 카지노에 방문한 고객 관리를 위한 시스템으로, 고객들의 숙소 예약, 환전, 식사 준비를 대신 도와주는 서비스를 제공합니다. 이상적인 예외 처리 방법에 대해 고민했습니다. 불변성을 보장하기 위해 변경 가능성이 없는 필드 변수들은 모두 final을 사용했고 컬렉션 사용 가능성과 객체의 행위와 상태를 한곳에서 관리하기 위해 일급 컬렉션을 사용했습니다.


주요 목표

클린 코드, 테스트, 리팩토링 중심의 좋은 품질의 서비스 개발

  • 복잡한 요구사항을 추상화시키며 기능 추가와 수정에 확장성 있는 대응
  • 클린 코드를 통한 유지 보수하기 좋은 코드 구현
  • 테스트 주도 개발로 신뢰성 있는 환경




reference - 오브젝트: 코드로 이해하는 객체지향 설계 - 객체지향의 사실과 오해 - 좋은 코드, 나쁜 코드 - 실전 자바 소프트웨어 - 자바 코딩의 기술 - 쏙쏙 들어오는 함수형 코딩 - 단위 테스트

About

객체지향적인 설계를 습관화 하기 위한 자바 프로젝트


Languages

Language:HTML 80.0%Language:JavaScript 11.0%Language:Java 8.2%Language:CSS 0.8%