Skip to content
This repository has been archived by the owner on Aug 6, 2024. It is now read-only.

n주차 과제 #103

Open
wants to merge 1 commit into
base: dlams
Choose a base branch
from
Open

n주차 과제 #103

wants to merge 1 commit into from

Conversation

dlams
Copy link

@dlams dlams commented May 27, 2023

junit5 사용법을 대략적으로 알아봤는데
명세에서 원하시는 방법을 정확히 모르겠네요 😢

로직 분리는 RacingGame 클래스로 만들어 구별했습니다

@k0000k
Copy link
Member

k0000k commented Jun 19, 2023

명세에서 원하는 방법은 Run with Coverage로 실행했을 때 Random을 제외한 모든 로직이 실행되는 것을 의미합니다.


import java.util.Scanner;

public class Main {
Copy link
Member

Choose a reason for hiding this comment

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

main함수를 담고 있는 클래스는 static한 요소들만 담고 있어야 합니다. 예를 들어, RacingApp이라는 클래스가 main함수 하나만 가지도록 클래스를 만들고, main함수는 입력클래스, 게임 로직 클래스, 출력클래스를 각각 인스턴스화 하여 실행하도록 설계 할 수 있습니다.

이런식으로 설계된다면, 입출력 클래스와 게임 로직 클래스는 의존성이 낮아져서, 게임 로직 클래스의 테스트가 쉬워집니다.

}

public static Car makeCar() {
MessageEnum.INPUT_NAME.printMessage(); // [ System ] 해당 자동차의 이름을 입력해주세요. (type: String)
Copy link
Member

Choose a reason for hiding this comment

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

Enum 정의해서 사용하는것 좋습니다!

.build();
}

public static int getLoopTime() {
Copy link
Member

Choose a reason for hiding this comment

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

상단에서 말씀드린대로 설계한다면, static이지 않아도 되는 이 메소드들을 non-static으로 만들 수 있습니다.

private int sizeOfCars;
private ArrayList<Car> cars = new ArrayList<Car>();

public RacingGame() {
Copy link
Member

Choose a reason for hiding this comment

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

기본생성자는 명시하지 않아도 됩니디!

import java.util.ArrayList;

public class RacingGame {
private int sizeOfCars;
Copy link
Member

Choose a reason for hiding this comment

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

사용되지 않는 멤버변수가 있습니다.

package utils;

public interface Car {
String name = "";
Copy link
Member

Choose a reason for hiding this comment

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

인터페이스에서 선언하는 멤버 변수는 자동으로 final이 됩니다. 여기에서 정의하지 말고, 해당 인터페이스를 구현할 클래스에서 선언해주세요.


public void describe();

public default void go(int time) {
Copy link
Member

Choose a reason for hiding this comment

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

NormalCar와 SuperCar가 이 경기에서 만들어 질 수 있는 모든 경우의 수 입니다. 따라서 인터페이스가 default 구현체를 가지고 있을 필요가 없습니다. 각 클래스에서 구현해주세요.

}
}

void move();
Copy link
Member

Choose a reason for hiding this comment

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

일관성을 위해 모든 메소드에 public을 붙이거나 삭제하거나 하시면 좋을 듯 합니다. (표기하든, 안하든 자동으로 public 처리가 되지만, readability차원에서!)

import utils.CarBuilder;

public class DefaultCarBuilder implements CarBuilder {
String name;
Copy link
Member

Choose a reason for hiding this comment

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

접근 지정자를 명시해주세요.

int speed;
boolean isSupercar;

public DefaultCarBuilder() {
Copy link
Member

Choose a reason for hiding this comment

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

기본생성자는 명시하지 않아도 괜찮습니다.

return this;
}

public Car build() {
Copy link
Member

Choose a reason for hiding this comment

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

굿!

@k0000k
Copy link
Member

k0000k commented Jun 19, 2023

코멘트 드린 사항들 확인하시고, 궁금한 점 있으시면 질문주세요~!

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

Successfully merging this pull request may close these issues.

2 participants