-
Notifications
You must be signed in to change notification settings - Fork 23
n주차 과제 #103
base: dlams
Are you sure you want to change the base?
n주차 과제 #103
Conversation
명세에서 원하는 방법은 Run with Coverage로 실행했을 때 Random을 제외한 모든 로직이 실행되는 것을 의미합니다. |
|
||
import java.util.Scanner; | ||
|
||
public class Main { |
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
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() { |
There was a problem hiding this comment.
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() { |
There was a problem hiding this comment.
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; |
There was a problem hiding this comment.
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 = ""; |
There was a problem hiding this comment.
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) { |
There was a problem hiding this comment.
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(); |
There was a problem hiding this comment.
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; |
There was a problem hiding this comment.
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() { |
There was a problem hiding this comment.
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() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
굿!
코멘트 드린 사항들 확인하시고, 궁금한 점 있으시면 질문주세요~! |
junit5 사용법을 대략적으로 알아봤는데
명세에서 원하시는 방법을 정확히 모르겠네요 😢
로직 분리는 RacingGame 클래스로 만들어 구별했습니다