続:僕の好きなコードの書き方

投げっぱなしで終わってた、これの続きね。

ここからスタート

詳細設計書をそのまま書き起こしました!的な。

そしてゴールが見えてないところから手探りで変えていってみます!

まずはできるだけ整理してみる

近くに持ってこようか?

elseが遠くにあってスクロールしないと読めないから、上に持ってくる。
一旦「!」をつけて条件を逆にしてみた。「!」は好きじゃないんだけどね。

そんな変わらんか・・・。

ネストを浅くしてみよう

でも、throwして終わってることが分かったから、else要らんよね。ちょっと読みやすくなった気がする。

終わっていいところはreturnしてみる

あれ・・・?読みにくくなった・・・。ま、次のステップの準備ってことで。

もっかいネストが浅くできる

returnを上げたから、もっかい浅くできるね!

だいぶフラットになったなー。

必要になったところで宣言するようにしてみる

最初にResultとか宣言してインスタンス化してるからずっと気にしてないといけないんよね。必要な部分でインスタンス化してみる。

Resultの生成もうちょい変える

この部分も生成してから返すまでひっつけられそうだから移動してみる。

      if (product.getPrice() < sum) {
        Result result = new Result();
        result.setProduct(product);
        sum -= product.getPrice();
 
        List<Integer> coins3 = new ArrayList<>();
        coins3.add(500);
        coins3.add(100);
        coins3.add(50);
        coins3.add(10);
        for (Integer coin : coins3) {
          while (sum > coin) {
            coins2.add(coin);
            sum -= coin;
          }
        }
        result.setCoins(coins2);
        return result;
      }

最初の整理はこんなとこかな。だいぶましになった?じゃ、次はちょこちょこメソッドを切り出してみよう。

ってところでターイムアーーップ!また次回!

P.S. このまま最終的にどこにもたどり着かなかったらどうしよう?と((((;゚Д゚))))ガクガクブルブルしている。そのときはゴールドエクスペリエンスレクイエムでも貼るか・・・。

追記

続き書いた。

bufferings.hatenablog.com