(W1D5) 자바 실습 프로젝트

Dependency

  • grade : Build Tool

    • 빌드한다. / 실행한다.
    • 외부에 의존성이 있는 라이브러리 설치
    • 빌드툴의 설정 파일 : build.gradle
    • dependencies 부분에 라이브러리를 넣어준다. -> gradle이 라이브러리를 대신 설치해준다.
  • 수 많은 라이브러리 중에서 목적에 맞는 라이브러리를 찾아내고 사용하는 능력도 중요하다!
  • Lombok 라이브러리

    • 어노테이션만으로 많은 기능을 간편하게 사용할 수 있다.

프로젝트 설계

  • 숫자야구 게임 설계
  • 요구사항 파악하기

    • 게임의 룰 이해
    • 동작 환경, 데이터의 범위 정하기
    • 3자리 숫자 사용 (확장 가능)
    • 중복된 숫자를 사용하지 않는다.
    • 1~9를 사용한다. (0은 사용하지 않음)
    • Console 상에서 동작하는 프로그램을 제작한다.
  • 일을 객체로 나누기 / 객체를 연관짓기

    • Engine 파트
    • Application 파트
  • 핵심로직 설계하기

    • Flow Chart 그리기

프로젝트 구현 - 엔진 레이어, 어플리케이션 레이어

  • 게임 엔진(핵심 로직)은 어떠한 외부 dependency도 가져가지 않는게 좋다.

    • NumberGenerator에 Java faker 사용하지 않는다.
    • NumberGenerator를 interface로 만든다.
  • 함수형 인터페이스 구현체 스코프 내에서는 스코프 밖의 변수를 읽을 수 있지만 쓸 수는 없다.

    • 스코프 밖의 변수에 동기화 기능을 추가해야한다.
    • AtomicInteger
    AtomicInteger strike = new AtomicInteger();
    AtomicInteger ball = new AtomicInteger();

정리

  • 비즈니스 로직을 만들어 가다가 필요한 부분을 찾아서 만드는 관점으로 개발을 진행하는 것이 유리하다.
  • 비즈니스 로직은 외부 의존도를 최대한 낮추자.

Written by@Myunghwan
Nothing changes if nothing changes

GitHub