Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[노현욱] RacingCar Mission 구현 #6

Open
wants to merge 29 commits into
base: rohsik2
Choose a base branch
from

Conversation

rohsik2
Copy link
Collaborator

@rohsik2 rohsik2 commented Mar 18, 2023

RacingGame 구현

프로젝트 구조 및 파일설명

├── src
    ├── main
    │   └── java
    │       └── racingcar
    │           ├── Car.java
    │           ├── InputManager.java
    │           ├── OutputManager.java
    │           └── RacingGame.java
    └── test
        └── java
            └── racingcar
                └── RacingGameTest.java


  • Car : 자동차 1대를 의미하며, 자동차가 랜덤적으로 전진할 수 있도록 하는 함수가 존재합니다.
  • InputManager : 입력부를 담당하는 객체입니다.
  • OutputManager : 출력부를 담당하는 객체입니다.
  • RacingGame : 자동차 경주가 직접 구현된 객체로, 다른 객체들을 활용해 게임을 수행합니다. 각 값에 대한 Validation Check도 수행됩니다.

코드를 쓰면서 신경썼던 부분

  • Dependency Injection 즉 내부에서 사용되는 여러 객체들을 최대한 다른 곳에서 가져올 수 있도록, RacingGame을 만들고자 했습니다.
    그에 input, ouput을 추후 콘솔이 아닌 다른곳에서 받아오더라도, 가능할 수 있도록 만들고 싶었습니다.
  • 순차적인 코드 : 코드가 위에서 아래로 읽힐 수 있도록 최대한 논리적 순서에 맞추어 코드들을 배치하고자 했습니다.

리뷰 받고 싶은 부분

  • 코드들이 잘 읽히고, method 이름이 예상된 동작을 하는지
  • 각 method들이 괜찮은 위치에 있는지
  • 일반적인 로직은 static으로, 객체가 해야할 동작은 method로 잘 구성되어있다고 생각이드는지

rohsik2 added 29 commits March 12, 2023 12:31
기존의 코드는 indent가 3단계 이상이었고, 2단계까지 문제에서 허용하기에 해당 요구사항 충족을 위해 변경함
해당 getter들을 사용해서 Application이 출력을 진행할 예정임

Related to : Dcom-KHU#5 Dcom-KHU#6
printManager 가 모든 print method들을 물고 있도록 만들어, 출력과 관련한 책임을 지도록 만듦

Related to : Dcom-KHU#1 Dcom-KHU#5
가장 먼거리를 구하고, 해당 거리만큼 이동한 모든 차량을 반환

Related to : Dcom-KHU#6
각 차량이 randomlyForward함수 통해서 이동할 수 있도록 구현

Related To : Dcom-KHU#4 Dcom-KHU#5
마지막은 ,가 출력 되지 않도록 설정

Related To : Dcom-KHU#6
IOC를 통해서 상관관계가 있는 객체들을 주입받도록(DI 가능하도록) 만들려고 함.
실질적인 생성자 수정 및 생성자 수정에 따른 로직 변경도 포함되어있습니다.
Stringbuilder가String에 비해서 더하기 할때 더 유리함
+ getDash와 같이 다른 함수로 분리
OuputManager의 자동차 이름 입력 가이드에서, 5글자 미만 여부로 입력하는 명령 추가.
RacingGame에서 최대 길이를 조사하던 로직삭제
Copy link
Collaborator Author

@rohsik2 rohsik2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM :)

Comment on lines +44 to +52
public void printWinner(List<Car> winnerCars) {
System.out.print("최종 우승자 : ");
for(Car winner : winnerCars){
System.out.print(winner.getName());
if(winner != winnerCars.get(winnerCars.size()-1))
System.out.print(", ");
}
System.out.println();
}
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utf-8 인코딩은 하셨나요? 한글 잘 나오나요?


}

private String getDash(int position) {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이건 왜 PRIVATE 이죠?

Copy link

@nahyun0121 nahyun0121 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저는 무작정 mvc 구조로 만들어야겠다는 생각만 했었는데, 그렇게 하지 않고도 이렇게 간단명료하고 깔끔하게 코드를 짤 수 있다는 것을 깨달았습니다.

}

private String getDash(int position) {
StringBuilder dash = new StringBuilder();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

java 8에서는 repeat 기능을 못 써서 저는 String에다 char를 하나씩 붙였는데, StringBuilder를 써서 for loop를 돌려 문자열이 반복되게 만드는 방법도 있다는 걸 알게 되어 좋습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants