Closed32

デザインパターンを知る

あっきーあっきー

開発部で週1で新しいことをやってみる『Dev実験室』の取り組み

今回は『デザインパターンと仲良くなろうの会』

村上健太村上健太

変わるものを変わらないものから分離する

村上健太村上健太

集約

concern??

class Engine
  # エンジンに関するたくさんのコード...

  def start
    # エンジンをスタート
  end

  def stop
    # エンジンをストップ
  end
end

class Car
  def initialize
    @engine = Engine.new # 集約
  end

  def sunday_drive
    @engine.start
    # 地方に出かけて、戻ってくる
    @engine.stop
  end
end
村上健太村上健太

委譲,委譲,委譲

  • method_missingをオーバーライドするやり方
  • forwardableモジュールを使うやり方
extend Forwardable

  # 他のハッシュのメソッドが使いたくなったらここに追記する
  def_delegators :@conditions, :keys, :[], :[]=, :each, :include?, :slice, :except, :merge, :dup, :to_hash, :delete, :reject!

ここらへんはピンとこない。

村上健太村上健太

デザインパターンを学習するとオーバーエンジニアリングをしがち。

YAGNI
うーん。となってきたらデザインパターンでリファクタリングする?

あっきーあっきー

デザインパターンって何?

オブジェクト指向で再利用性の高い設計とするためのパターン

メリット

  • 再利用性の高い柔軟な設計ができる
  • 技術者どうしの意思疎通が容易になる

https://www.techscore.com/tech/DesignPattern/foundation/foundation1.html/

村上健太村上健太

言語の特性とか機能ではなく、コーディングに共通した考え方・書き方。
オブジェクト指向のコードの分け方・書き方

あっきーあっきー

デザインパターンを学習するとオーバーエンジニアリングをしがち。
パターンは便利なテクニックだが、それを実装すること自体が目的にならないように常に注意する必要がある。

トンカチを持つと全部が釘に見えちゃうやつ
気をつけたい

あっきーあっきー

感想

あっきーあっきー

具体的な使い方がなかなか想像がつかない…
時代背景などがあるのか?
特にRubyを使っているからか知らない間に最適化されているものが多い気がする

村上健太村上健太

実務に関連した例のコードがあるとピンとくるが。。。

コード的に理解できても使い所がわからなかった。

syunsyun

デザインパターンは難しい。
コードサンプルがあると理解は進むが「実際にそんな状況ある??」となることが多かった。
例えば、デザインパターンが組み込まれたライブラリを読み込むなどするとより理解が深まり実践で使えるようになるのかもしれない。

syunsyun

Singleton

オブジェクトの生成を1つに限定して使い回したいときに便利(らしい

あっきーあっきー

便利そうなのはわかるけどロガー以外で使うシーンが思いつかない。。。😇

このスクラップは2021/07/01にクローズされました