ken1flanのブログ

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

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

gihyo.jp

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

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

3 クラス設計 ―すべてにつながる設計の基盤―

  • この本全体の基本になっている章だそう。ちょくちょく見直せるようにしとこ。

3.1 クラス単体で正常に動作するよう設計する

  • 複雑な初期設定がいらないようにする…。
    • このあたり、結構しくじっているような気がする…。ちょっと気をつけます…。
  • メソッドは必ずインスタンス変数を使う…。
    • reekで指摘される気がします。
  • 面倒くさいことをしなくても利用できるようにしとく…。利用者の視点になれば、たしかに…。

3.2 成熟したクラスへ成長させる設計術

  • コンストラクタで値を入れるようにするのは、やってます!
  • Railsでモデルのバリデーションを書くのが面倒だと思ってました。
    • 今はたくさんの不具合にヤラれて、必ず書くようにしています。
      • 設計が足りてなかったってことかも。
    • 機能をざっくり作ったあとで、見直しながら整えるときに埋めるようにしてます。
  • ガード節、よく使うけど、そんな名前があったとは…。
  • オペレータの実装、いいですよね。
  • railsで金額を扱うときにこういう実装したいと思ったのですが…chatgptに聞いたら、money-railsを使えと。
    • 自分で実装するには?と聞くと、勉強になりました…。
    • 他のデータクラスでも勝てる…!
  • 不変化…!
    • たしかに使いたいと思うときがありますね…。
      • Read onlyにしたいときとそうでないときがあるような…。
    • そういえば、finalをちゃんと使える言語を使ったことがない…。
      • Dart/Flutterで体験するか…!
  • MoneyはMoneyとしか足せないように…。
    • 大変だけど、効果ある…かも?(やってみたことないので気になる…)

3.3 悪魔退治の効果を検証する

  • 「悪魔」「設計パターン」でなんかゲームできそうですね…!

3.4 プログラム構造の問題解決に役立つ設計パターン

  • 完全コンストラクタと値オブジェクトがもっとも基本形
    • OOをなんか使いこなせてない感があったのは、ここから来てたのかも?
      • …名前も知らずに使っていたというか…。
    • もうちょっとやっていこう…!

Column 種類の異なる言語と本書のノウハウ

  • JavaのMoneyクラスをRubyJavascriptで書き直してる…!
  • 設計思想は言語によらないですからね…。
    • 実現方法が違ったりするでしょうけど。