[#38323] [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — oshida@...

押田です。

22 messages 2009/04/24
[#38331] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/04/26

永井@知能.九工大です.

[#38339] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — oshida@... 2009/04/27

押田です。

[#38340] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/04/27

永井@知能.九工大です.

[#38697] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/06/21

永井@知能.九工大です.

[#38711] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — oshida@... 2009/06/24

押田です。

[#38723] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/07/01

永井@知能.九工大です.

[#38743] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — oshida@... 2009/07/07

押田です。

[#38747] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/07/08

永井@知能.九工大です.

[#38748] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — oshida@... 2009/07/08

押田です。

[#38749] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/07/08

永井@知能.九工大です.

[ruby-dev:38273] Re: rinda/eval.rb

From: Tanaka Akira <akr@...>
Date: 2009-04-04 03:29:50 UTC
List: ruby-dev #38273
In article <86y6uib0cd.knu@iDaemons.org>,
  "Akinori MUSHA" <knu@iDaemons.org> writes:

>  ただ、 respond_to? における typo のリスクを仰るならなおさら、
> respond_to? での判定を助長するような変更はよくないと思います。

はい。typo の点で respond_to? が最善でないことには同意します。

respond_to? な理由には、duck typing との共通化と、定数やメソッ
ドを増やさないで済ますという点があります。

どちらも、ユーザが必要とする知識を減らすという意図です。

とくに、duck typing との共通化は、使えるかどうかを判定するに
は respond_to? を使う、というユーザの知識をできるだけ活かし
ていきたいという意味があります。

>  端的に言えば Process.respond_to?(:fork) とシンボルで渡すから
> typo が見過ごされうるのであって、もし Process.forkable? とか
> Process.implement?(Process::FEATURE_FORK) のような手段が用意
> されるのであればそうした問題はないわけです。

たしかに typo の点ではそちらが有利だと思います。

ただ、これは今まで使っていなかった方法を導入するので、ユーザ
に新しい知識を要求します。

また、名前が増えるという点でも覚えることが増えます。

>  NotImplementedError の捕捉でカバーできないケースとしては、
> たとえば fork する前に副作用のある前処理が必要なので、 fork
> する段になって NotImplementedError を出されても代替手段に切り
> 替えられない、といった状況が挙げられます。

はい。それが実行せずに判定したい、という要求の原因だと思いま
す。今回の rinda はそうではなかったようですが。

>  さらなる悩みとしては、もし仮に Process.forkable? のような
> メソッドを用意し、上述のメソッドが冒頭で
>
>     Process.forkable? or raise NotImplementedError
>
> としたとしても、なおそのメソッド自体に NotImplementedError が
> 出ないかを事前判定する手段が必要になりそうだということです。

そうですね。最大としては、実装されていないことがあり得るメソッ
ドそれぞれについてそれを判定するメソッドや定数が必要になりま
す。

そうやってつくっていくと、名前はある程度規則的にはなるでしょ
うが、それでもゆらぎはでてくるでしょうし、決めること、覚える
こと、が多くなっていやなかんじがします。

たとえば、File.truncate に対して
truncateable にするか
truncatable にするかとか。

respond_to? の場合は、対象のメソッド自体の名前を使うので、そ
ういう悩みはありません。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread