moveメソッドの定義場所
同じ処理を何回も書くのは嫌いなので、メソッドに括りだしてしまったほうがいいね。使い回しも利くし。世の中にはDRYというコトバもあることだし。自分でモジュールを書くようになると、再利用性の素晴らしさが身に沁みて実感できる。
moveメソッドをどこで定義するかちょっと悩んでる。Tangerine.pmで定義するか、T::Plugin::Baseで定義するか。T::P::Baseで定義すると、モジュールを使う側で1箇所だけとはいえあまりにも不自然な呼び出し方になるから、Tangerine.pmで定義しておいて、T::P::BaseはTangerine.pmを継承しているのがいまの実装。だけど、T::P::Baseがすべてのプラグインのスーパークラスであることを考えると、moveメソッドは当然T::P::Baseで定義してあるほうが自然なんだよね。逆にTangerine.pmをT::P::Baseから継承するのも不自然だし。サブクラスのプラグイン固有のメソッドもいくつかある*1けど、プラグインごとに異なるデータを持たせる必要があるコンストラクタ以外はほとんど全部T::P::Baseから継承してるから、できればT::P::Baseに定義させたいんだけどなぁ。どうしようかなぁ…。