ken1flanのブログ

自己紹介・最近やってることなどを書くつもりです。

良いコード/悪いコードで学ぶ設計入門 7章のメモ

gihyo.jp

良いコード/悪いコードで学ぶ設計入門読書メモです。

長いので章ごとにしてます。

7 コレクション ―ネストを解消する構造化技法―

7.1 わざわざ自前でコレクション処理を実装してしまう

  • ちょくちょく名前で検索するコードがサンプルにありますが…国際化とか考えたら絶対やらない気がするんですが…見かけるコードなんですかね…。(リスト7.1、7.2)
    • クソリプだったかも。例としてパッと読めるからですかね…。
    • ただ、ちょっと勘違いされそうで、ヤダなぁ…。

Column 車輪の再発明

  • 一般的にありそうだな―みたいなのは最初に標準ライブラリを探しましょ、みたいな感じですかね…。
  • 標準ライブラリ以外は…選定にセンスがいるのも…。
  • 「一考」より「一興」のような?
    • 「一考」だと、すぐにやらずに立ち止まってもう一度考えちゃってるというか…。
    • 「一興」はちょっとした面白みとかですし。
    • それとも「一考の価値があります」かなぁ…。
    • 違和感が…。

7.2 ループ処理中の条件分岐ネスト

  • こんなんベタに書かなくないですか…?(リスト7.3)
    • 仕様の時点でスパゲッティです…。
  • うーん…まずはループの中をメソッドにまとめるところからではないでしょうか…?
    • 早期continueの例にしたいだけですかねぇ…。

7.2.1 早期continueで条件分岐のネストを解消する

  • それはそうと、これもサッサとcontinueすると構造がスッキリする、というのは納得です。

7.2.2 早期breakもネスト解消に役立つ

  • ネストを深くしたくない気持ちを持って、構造を見直すと割とすっきりしますよね。

7.3 低凝集なコレクション処理

  • んー…membersはFieldManagerの属性にしとけば…とか余計なことを思ってしまいます><(リスト7.8)
  • ↑などということを思いながら読んできましたが…なんとなくこういった処理が散らばっていく感じはすごくします。(リスト7.8〜7.10)

7.3.1 コレクション処理をカプセル化する

  • どういうときに副作用があるか、例を書いてくれるとうれしいかも。
    • 場合によってはやりすぎって事もあるのでは…?

7.3.2 外部へ渡す場合はコレクションを変更できなくする

  • 不変にして渡さないときの恐れはわかります…。ミスしにくくなりそうです。