ウトコプリコス3週間振り返り


[MVC]自動販売機の実施
今回3週目のミッションを開始する前に、2週目のミッションフィードバックを受けた部分を中心に、レースゲームを再実施しました.
// 내가 2차 미션에 제출했던 코드 일부
public class Car {
    ...
    public String report() {
        StringBuilder sb = new StringBuilder();
        sb.append(name.report() + SEPARATOR);
        sb.append(position.report());
        return sb.toString();
    }
    ...
}
フィードバックの部分をどのように適用するかを考えている間に、グーグルを通じてMVCモードに会います.MVCモデルを学び,タスクを再実施し,それを実践に応用した.
(参考資料:インフラストラクチャカリキュラムリソース)
この過程で、奇妙に方法に名前をつけて、とても気まずい思いをしました.よく考えてみると、それまで階層を区切っておらず、システムとユーザの観点からメソッドの名前を付けていただけなので、今のようにシステム内部で階層を区切って、各層間で情報を伝える際には、初めて相互の関係を考慮する必要があります.
試行錯誤を経て,最終的にドメインオブジェクトに依存するViewクラスが形成された.当時は思いもよらなかったが、Viewクラスがドメインオブジェクトに依存すべきかどうか、ここで追加のDTOオブジェクトを作成して実装すべきかどうか疑問だった.この部分はもっと勉強する必要があるかもしれません.
// 피드백 받은후 다시 구현한 코드 
public class ResultView {
    public static void show(Result result) {
        System.out.println("경기결과");
        result.getResult().forEach(cars -> {
            cars.getCars().forEach(car -> System.out.println(car.getName() + " : " + convertPosition(car)));
            System.out.println();
            }
        );
    }
    ...
}
今回の任務はコイン自動販売機実施です.前回のタスクに比べて例外処理が多くなったため,メソッド宣言も増加し,クラス内コードも長くなった.何度も尊敬しているうちに、急に私のコードが読めなくなった.最大の理由は,これまでメソッドの順序をアクセス制限者を基準に手配し,外部で使用されていないプライベートメソッドを最下位に位置させたことである.

この解決策はOracle文書で見つけることができる.
範囲やアクセス性ではなく、機能別にグループ化する必要があります.たとえば、プライベートクラスメソッドは、2つの共通インスタンスメソッドの間に存在してもよい.コードを読みやすく理解することを目標としています.
したがって,今後はより読みやすいコードを作成することができる.
今回のタスクではCoinに列挙タイプが与えられ,ここでコイン個数をマッピングするためにタスクで初めてmapが用いられる.任務に応じて最小限の硬貨数を返還するので、当然自動販売機に存在する硬貨の中で最大値の硬貨を先に差し引く.この過程では,最初は馴染みのあるhashMapを用いただけであったため,別のコインの中で最大値のコインを確認する論理が加わった.尊重の過程で、今週のフィードバックの一つはjavaが提供したapiを積極的に利用し、googlingを通じてLinkedHashMapとTreeMapを知ったことだ.タスクでコイン注入をランダムに抽出するため,入力順序を保証するLinkedHashMapの代わりに比較キー値自動ソートのTreeMapを用いて補完した.この過程で,列挙タイプがComparableインタフェースを体現していることも分かった.
実際,今回のタスクではTDDだけでなく,正確なセルテストが行われていない.時間の制約がなく、互いに織りなす階層の間で、どこからテストを始めるのか混乱しているからだ.mvcモードとTDDを正しく理解していない傍証だと思います.この部分は最終テストが終わった後に勉強し、順番に徐々に再体現するつもりです.
これで最後の任務は終わったよくあるアイデアですが、この3週間は本当に早いですね.思い出してみると、これは多くの時間を経験し、ある部分を理解したと勘違いし、どのように学ぶべきかを知る貴重な時間だった.

  • 第1週振り返り

  • 2週目のレビュー