MooseでDP入門を書いて思った事

hyukiさんのDP入門のRuby版コードをそのままPerlにportingしてみて何点か思った事。

Mooseで少し思ったところ

  • コンストラクタで何か処理させたい場合は、BUILD使うってのがFAQに書いてあるんだけど直感的でない
  • hasのdefaultで設定する要素にparameter渡したい場合はどう書くべきかがよくかよくわからない
  • RubyのeachはMoose::Autoboxに追加したい.
    • autoboxみるとforeachとforをまんま使えるようにしてあるなぁ
  • インターフェースをRoleで書くのがいいのかは微妙
    • 名前だけの強制だと引数がわからないから。signatureレベルで強制できるともう少しいいかも。
    • 名前だけでもあったほうがbetterだとは思うけれど、コードが仕様にならないという点で少し微妙。

オリジナルのコードについて

  • porting元のコードがそんなにRubyっぽいわけじゃない(それがそんなに悪いわけじゃないけれど)
  • 一部のインスタンス変数はread onlyでよいっぽいんだけど、元のコードの意図がよくわからないものは全部rwにした
    • まぁ、使う人は適当に.

コードのフォーマット

  • perltidyでまんまやってるのだけけれど、hasとかは1行じゃなくて複数行にしたい
    • 面倒なので、perltidy側でやりたい。どっかの設定でいじれるのかがよくわかってない

パターンについて

  • LLっぽいパターンの例も、別の形で書きたい。
  • DIを使った応用について書きたい
  • concere, subtypeを使った例とかは、結構使う場面も多いし有用だと思うんだけれど、このDP入門では使う場面があんまりなさそう

ということで、参考になるコードあれば、是非色々と教えてもらえると嬉しいです。