From: sho@... (TADA Tadashi) Date: 2000-03-14T23:27:55+09:00 Subject: [ruby-list:21428] Re: 引数コピーとオブジェクト指向 ただただしです。 #まとめて失礼します。 A.中村さん: >ぎゃははははははは _(__)ノ彡☆ばんばん! #拝借>るびきちさん >俺的に今月のヒットっす。attr_dupあっさり敗退。 うーむ、ウケてしまったか……(笑)。思いついたときは頭の中が晴れ上がった ようないい気分でした:-) なかださん: > そんなはるか彼方まで name (というか変数のエイリアス)が生き残っ >ていること自体に危険を感じてしまいますが。 松尾さん: >はるばる10個受け渡すのは中田さんもおっしゃられている通り、設計が悪い可 >能性が高いですね。それに「うっかりsub!」してしまう開発者がいる、という >前提になってる。  まぁこれは、わざと極端な例を出しただけなので。でも、やはりどこで誰が 書き換えてしまうかという不安は拭いきれません。不幸にして私は「うっかり sub!をしそうな開発者がいない」と言いきれるようなプロジェクトを任された ことがないので、ある程度「安全側」に倒しておきたいという気持ちはよくわ かるんですよね。クラスライブラリにでもなれば、自分の目が届く範囲でだけ 使われるわけでもないし。  とりあえず、「dupだけが唯一の正解」というのは、自らの代案をもって撤回 します。unfreezeがなくてホントによかった(笑)。 松尾さん: >多少開発者のスキルに不安があるなどの理由で、何らかの工夫をするという現 >実的な対応はあって良いと思います。提示されたコードは例外発生で注意を喚 >起し開発者のスキルを高めながら、安全性と開発効率を高い次元で折り合いを >付けている良い案ではないでしょうか。  ほめられちった:-) initializeで例外をあげるということは、問題があれば Personインスタンス生成時に必ずこれを感知できるということです。これをや らない、もしくはPersonがnameを内部で勝手にfreezeをした場合、時間的・場 所的に遠く離れた場所で誰かがsub!をしてしまったらそのデバッグはかなりコ ストがかかることになります(製品が出荷されちゃったあととかね)。 ですから、 安井さん: >自分もfreeze案を出しましたが、いくらなんでもこれはやり過ぎな気が。せめて >warningくらいで、ってそれも中途半端か。 やりすぎじゃないと思います。むしろ内部で勝手にfreezeするより親切設計じゃ ないでしょうか。 石橋さん: >そもそも「dup論議」は、RubyのStringの特殊性に起因するようです。 > 「Stringの変更権問題」を解決して、String#dupを使わない >というのが結論ではないでしょうか?  賛成です。私もいつまでも逃避してるわけにいかないのでこのへんで……。  あ、でもConstantStringは「書き換えた時に初めて例外が出る」ので、上に あげたような理由であまり親切じゃないと(私は)思います。 -- □Don't □ただただし@神奈川県相模原市 □Think,□こま犬: http://www.bekkoame.ne.jp/~sho/komainu/ □Buuuy.□SUPER Cub: http://www.bekkoame.ne.jp/~sho/cub/