投げっぱなしで終わってた、これの続きね。
ここからスタート
詳細設計書をそのまま書き起こしました!的な。
そしてゴールが見えてないところから手探りで変えていってみます!
Gist
先に貼っとくね。
https://gist.github.com/bufferings/9414995751687177e882
変更履歴はこんな感じ
https://gist.github.com/bufferings/9414995751687177e882/revisions
まずはできるだけ整理してみる
近くに持ってこようか?
elseが遠くにあってスクロールしないと読めないから、上に持ってくる。
一旦「!」をつけて条件を逆にしてみた。「!」は好きじゃないんだけどね。
そんな変わらんか・・・。
ネストを浅くしてみよう
でも、throwして終わってることが分かったから、else要らんよね。ちょっと読みやすくなった気がする。
終わっていいところはreturnしてみる
あれ・・・?読みにくくなった・・・。ま、次のステップの準備ってことで。
もっかいネストが浅くできる
returnを上げたから、もっかい浅くできるね!
だいぶフラットになったなー。
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. このまま最終的にどこにもたどり着かなかったらどうしよう?と((((;゚Д゚))))ガクガクブルブルしている。そのときはゴールドエクスペリエンスレクイエムでも貼るか・・・。