From: Masao M. <mu...@hi...> - 2004-10-17 09:49:06
|
むとうです。 On Sun, 17 Oct 2004 16:00:42 +0900 (JST) Kouhei Sutou <ko...@co...> wrote: > 須藤です. > > * Gnome::PrintConfig.newの実装はちょっとまずいような気が...。 > > 実装がまずいというのは,無駄にrb_scan_argsしているということ > ですか?これは,私のミスなので削除しました. > > > > 普通に#initializeを使った方が良いような気がします。 > > A, Bというクラスがあったとして, > > B.new # -> instance of A > > ということがしたいので,#initializeだと無理だと思います. > > class A; end > class B > def self.new > A.new > end > end > > class C > def initialize > A.new > end > end > > p B.new # -> A > p C.new # -> C 上記のご説明いただいた内容からしますと、 B.new #=> Aということ自体、直感的でないような気がします。 B.newで返すインスタンスはBであるべきでは?ということです。 逆に、同様のことをしたいのでしたらメソッド名を変えるとかの方が 良いような気がします。 たとえば、B.create_factoryとか。 でも、私が指摘した点はもっと単純で、Rubyとlibgnomeprintの ライブラリの対応関係を考えて gnome_print_config_default/_from_stringの実装を見ると、 どちらも、GNOME_TYPE_PRINT_CONFIGのインスタンスを作っているので B.new #=> AではなくB.new #=> Bでは無いでしょうか(つまり、Ruby側 から見るとそれはやはりGnomePrintConfigのインスタンスなのではないかなと) と言う前提の元、それならば#initializeを実装すべきでは?ということでした。 #何か勘違いしてるのかな...。 > > →というか、これ、#default, #from_stringは無くして#initializeだけに > > してしまって良いような気がするのですが...。 > > #from_stringをなくするというのは賛成ですが, > PrintConfig.defaultはなくさない方がよいと思います. > PrintConfig.new()で毎回同じ(デフォルトの)GnomePrintConfig > が返ってくるのは自明でない気がします.PrintConfig.new()でデ > フォルトのGnomePrintConfigが返ってくるのは便利でよいと思いま > すが,コードを読む時はPrintConfig.new()より > PrintConfig.defaultと書いてあった方が意図が伝わりわりやすい > と思います. 賛成です。ただ、それであれば、PrintConfig.defaultの機能をPrintConfig.new から省くべきではないでしょうか。 > > * Gnome::PrintPaper#get_by_name, #get_by_sizeですが、 > > このように、_by_fooと言う感じで引数が違うだけの時は一つにまとめてしまう > > ことが多いです。この場合は、Gnome::PrintPaper#getでしょうね。 > > ただ、これはお好みで。 > > Gnome::PrintPaper#getのみにしました. > 一応,Gnome::PrintPaper#get()でGnome::PrintPaper#defaultと同 > じことになるのですが,Gnome::PrintPaper#defaultの方がデフォ > ルトの用紙という感じがでるので,Gnome::PrintPaper#defaultも > 残してあります. 良いと思います。 > > * Gnome::PrintPaperの実装ですが、わざわざGnome::PrintPaper::Paperを > > 用意した意図がちょっとわからないのですが...。 > > rubyのレベルでいうと > > A = Struct.new(:a, :b, :c) > > と > > A = Struct.new("A", :a, :b, :c) > > の違いで,今回は後者を使っていたので,A::Aがあるという話です > よね? いやいや、単純にGnomePrintPaperという構造体をラップするのに、 Gnome::PrintPaper::Paperは不要(というか冗長)なのではないかな、 ということです。 > なんですが, > > > 単純にGnome::PrintPaperをクラスにする方が良いような気がします。 > > 通常、このような場合、個別の仕組みを作らず、GBoxedなオブジェクトに > > すると楽で良いと思います。 > > ということなので,そうしました. そうですね、この方が良いように思います。 > > * Gnome::PrintPrinterですが、これ、GPANodeを実装した後で > > そのサブクラスとして定義した方が良いような気がしますがどうでしょうか。 > > そうですね. > おいおいやっていきます. そうですね。今すぐ必要と言うことでは無いと思います。 > ちなみに,次のリリース予定はありますか? > それまでには仕上げます. あぁ、そういえばそろそろリリースしないとなぁと思いつついろいろと 忙しさにかまけて考えてませんでした。 そうですねぇ。10月末くらいを目処に一度リリースするというのは どうでしょうか? #もっと早いほうが良いですか? -- .:% Masao Mutoh<mu...@hi...> |