Skip to content

第2章 火曜日: メソッド

yowasou edited this page Aug 13, 2023 · 22 revisions

メタプログラミングruby読書会::第2章

構成

  • 2.1 重複問題
    • 2.1.1 レガシーシステム
    • 2.1.2 ダブル、トリプル、トラブル
  • 2.2 動的メソッド
    • 2.2.1 メソッドを動的に呼び出す
    • 2.2.2 メソッドを動的に定義する
    • 2.2.3 Computerクラスのリファクタリング
  • 2.3 method_missing()
    • 2.3.1 method_missing()のオーバーライド
    • 2.3.2 ゴーストメソッド
    • 2.3.3 動的プロキシ
    • 2.3.4 Computerクラスのリファクタリング(再び)
  • 2.4 クイズ: バグ退治
    • 2.4.1 クイズの答え
  • 2.5 もっとmethod_missing()
    • 2.5.1 メソッド名が衝突したら
    • 2.5.2 まとめ

疑問・質問・ポイント

  • 2.1 重複問題

  • 2.2 動的メソッド

    • p77 confオブジェクトには admin= メソッド等が定義済み(定義されていると期待してもよい)なのでしょうか。続きを読むと、定義済み、動的メソッド、ゴーストメソッドのいずれかであるとわかり、流れ的にはここでは定義済みのような気がしますが、初読のときにイメージできず悩みました。 (kiwofusi)
    • p77 conf.send("#{k}=", v)となっているが、=を付けなければならないのか。メソッドの命名規約?(sea_mountain)
    • p80 コード例、componentメソッド内の"get_#{name}_price"のnameはto_sしなくてもいい?(sea_mountain)
  • 2.3 method_missing()

    • p89 「オブジェクトがゴーストメソッドを受け取り、なんらかのロジックを適用してから、他のオブジェクトに転送する」ですが、これを具体的に言い換えると、「Flickerオブジェクトがゴーストメソッド tags_getListUser() を受け取り、method_idを書き換える処理を適用してから、XmlSimpleオブジェクトに転送する」ということでしょうか。FlickerオブジェクトではなくXmlSimpleオブジェクトが主な仕事をしてくれるから、Flickerはプロクシ(代理)のようなもの、という認識でいいかな。 (kiwofusi)
    • p90 この例でDelegateClassを使うメリットが良く解らない。(mackato)
      • 同感ですw (kiwofusi)
  • 2.4 クイズ: バグ退治

  • 2.5 もっとmethod_missing()

    • p100 「@hidden_methods ||= {}」の「||=」って何? (kiwofusi)

リンク

Clone this wiki locally