まつもと ゆきひろです
In message "[ruby-list:3839] Re: SyslogSendmail class"
on 97/08/27, TAKAGI Hiromitsu <takagi / center.nitech.ac.jp> writes:
| > * def date; @date endなどはattr :dateの方がrubyらしい?
|
|これは知りませんでした。こんなふうに書かなきゃいけないのはおかしいと
|おもいつつ。でもドキュメントのどこを読めばよかったのだろう…。
Moduleのところに書いてあるんですねえ.こういうノウハウを記述
したドキュメントを整備しないといけないのが一目瞭然ですね.
|ところで、複数をまとめて
| attr :date :time :process_name
|のようには書けないのですね。そういうものではない??
attrはread-witeであるかどうかを示す第2引数を取るメソッドなん
です.一度に指定できた方が良いんですかねえ.
|……それから、ぜんぶ attr :... に置き換えてみたところ動かなくなって
|しまいました。調べてみたところ class SyslogSendmail の
| def id; @id end
|だけは、「attr :id」にしちゃまずいようです。
|「def ...; @... end」「attr :...」の両者はまったく同じ意味というわけで
|はないのでしょうか?
というのはですね.attrはメソッドがすでに定義されているとなに
もしない(改めて再定義しない)んですが,idというメソッド(オブ
ジェクトIDを返す)がすでに存在しているからですね.これは上
書きした方が良いでしょう,仕様を変えましょう.
# でもやっぱりidは名前を変えた方が良いかも.
| > * createで適切なクラスの生成を行っている部分が若干不自然な
| > 気がする.どうするのが良いのかぱっと思いつきませんが.
|
|これは ruby の問題というよりデザインパターンの問題でしょうか。
|
|ruby だと new を再定義できるのでそれを使うということも考えたのですが、
|Syslog.new したのにそのサブクラスの SyslogSendmail のインスタンスが
|返されるというのもどうかとおもいまして…。
そうなんですよねえ.多分,一度生成してみて駄目だったら別のク
ラスで…というやり方が気持ち悪かったんでしょう.lineを解析す
るメソッドが独立していれば,もうちょっと気分が良いかも.
まつもと ゆきひろ /:|)