Develope Story

2019-04-29 [java-study] 레이싱게임2단계 스터디

|

레이싱 게임 2단계

기능 요구사항

  • 각 자동차에 이름을 부여할 수 있다. 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다.
  • 자동차 이름은 쉼표(,)를 기준으로 구분한다.
  • 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한명 이상일 수 있다.

프로그래밍 요구사항

  • 메소드가 너무 많은 일을 하지 않도록 분리하기 위해 노력해 본다.
  • 규칙 1: 한 메서드에 오직 한 단계의 들여쓰기(indent)만 한다.
  • 규칙 2: else 예약어를 쓰지 않는다.
  • 모든 로직에 단위 테스트를 구현한다. 단, UI(System.out, System.in) 로직은 제외
  • UI 로직과 핵심 비지니스 로직을 분리한다.

실행 결과

  • 위 요구사항에 따라 3대의 자동차가 5번 움직였을 경우 프로그램을 실행한 결과는 다음과 같다.
경주할 자동차 이름을 입력하세요(이름은 쉼표(,)를 기준으로 구분).
pobi,crong,honux
시도할 회수는 몇회인가요?
5

실행 결과

pobi : -----
crong : ----
honux : -----

pobi, honux가 최종 우승했습니다.

후기

이번 실습에서 변수명, getter/setter, 클래스 당 50줄 넘지 않고 각각의 기능들이 객체 내에서 처리되도록 노력했다. 기능적인 요소들은 private 메소드로 만들고 기능을 활용하는 메소드는 public으로 만들었다. 구현적인 측면에서는 이전보다 더 나아졌지만 리팩토링 구현 시간( 구현2 : 리팩토링8 )이 늘었다. 최대한 만족도 높은 코드를 짜기 위해서 다양한 관점에서 코드를 봤기 때문이다. 매일 코딩을 이런식으로 할 수는 없겠다 싶어 시간을 정해두고 코딩을 하는 방향으로 추진해 나갈 계획이다. 다른 사람들의 코드를 보니 람다식과 stream을 사용하여 java8에 대해 공부를 하였다. 아직까진 람다식이나 stream보단 for문이 더 가독성이 높다고 생각하고 람다식이나 stream은 자주 써보는 식으로 공부해나갈 예정이다.

다른 사람과 차이점

  • 람다식 (Stream 활용)

람다식 정리

stream 정리

전체 소스코드 https://github.com/sproutt/java-study-racingGame/pull/35/files

Comments