3期無料レッスン-2
タスク#タスク#
ミッション-レーシングカーゲーム
マイコード
今回のゲームのロジックも簡単です.
今回の完全なコードの展示はあまりよくないと思います.
これからはもっと勉強しなければならない部分だけを議論します.
パッケージ構造
レビューポイント
事前準備?
ソフトウェアシステムは、アプリケーション・オブジェクトを作成し、相互に関連付けられる準備プロセスと、準備プロセス後のランタイム・ロジックを分離する必要があります.
Clean Code - Robert C. Martin
あちこち探して、やっとこんな文章を見つけました.
システムの作成と使用を分けるというようですが...
このゲームのメインアプリケーションで使用するオブジェクトを作成します.
オブジェクト間の依存関係を確立します.
ランタイムロジックを実行します.
InputView.java
public List<String> inputCarName() {
List<String> carNameList = new ArrayList<>();
System.out.println(INPUT_CARS_NAME_MESSAGE);
String carNameString = scanner.nextLine();
StringTokenizer stringTokenizer = new StringTokenizer(carNameString, TOKENIZER_DELIM);
while (stringTokenizer.hasMoreTokens()) {
carNameList.add(stringTokenizer.nextToken());
}
return carNameList.
stream()
.filter(Validator::validationInputName)
.map(String::trim)
.collect(Collectors.toList());
}
使用するCarの名前を入力するのは、プリセットロジックです.実行時ロジックであるかどうかは不明です.
この値は検証された後,Carsオブジェクトに移動して論理を行うなど,単純に予め用意されたデータと考えられるため,多くの役割を果たす可能性がある.
ソースオブジェクトの静的変数
Car.java
private static int maxPosition = 0;
Cars.javapublic List<String> getWinnerList() {
return cars.stream()
.filter(Car::isWinner)
.map(Car::getName)
.collect(Collectors.toList());
}
優勝者を区別するために静的変数maxPosionで確認したまだコンセプトが弱いような気がします.
レベル1のセットに変更と再割り当てがない場合は、元の値にアクセスできますか...?
一級コレクションを復習...
DTOの使用
Cars.java
private String[] getData(String name, int position) {
return new String[]{name, intToHyphen(position)};
}
Carのgetterにデータを転送してゲーム結果を出力します.Carsクラス外から直接Carのデータを取り出すことに粗さや一次集合の意味はないようで,
getData()
を作成してString[]タイプに変換した.でもこれはDTOだけ...
この部分の代わりにDTOを編んだおへそはお腹より大きいと思います
面倒くさいから弁解したのかもしれない
ハードコーディング...?
GameController.java
public void play() {
Cars cars = new Cars(inputView.inputCarName());
int gameStepCount = Integer.parseInt(inputView.inputGameStepCount());
OutputView.printGameMessage();
while (gameStepCount > 0) {
List<String[]> carData = cars.nextGameStep();
OutputView.printGameStep(carData);
gameStepCount--;
}
List<String> winnerList = cars.getWinnerList();
OutputView.printGameWinner(winnerList);
}
毎回ゲームを行う回数は、数字で行います.でも0度ハードコーディングだと思います
私はずっとあれこれ考えていたが、見つけた.ハードコードだったのか.ははは
でもどうやって取り除くのか、
チェック関数を作成してbooleanに戻すかどうか、
あるいは同じ方式ですが、0万定数化できるかどうかはわかりませんが...これを探しています.
反省する
ある先輩のコードを見て、今の開発者だと思って、とても起きられませんでした.
私は彼に倣うべきだと思います.
しかし、要求されていない検証をたくさんしました.
いずれにせよ、要求事項にない検証を行う必要がある.
もちろん検証がまじめであればあるほど...
柔軟な入力も故意かも??
また名前が难しいと感じた.
英語も難しい...なんだ.これは本当に.
他の人がどんな名前を使うかもっと見てみましょう.
クミットをよくしなさい。
ああ.ずっと提出を忘れて、私だけを忘れて和音を打っています.
機能別に提出!!!!
でも提出も難しい...
クミセ・メセジの先輩たちを見て、感じを見つけるべきだと思います.
Reference
この問題について(3期無料レッスン-2), 我々は、より多くの情報をここで見つけました https://velog.io/@jaca/3기-프리코스-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol