あおきです。

  In mail "[ruby-list:23063] Re: File Utilities"
    TAKAHASHI Masayoshi <maki / inac.co.jp> wrote:

> 高橋征義です。

> 私の手元のfutils.rbとfileutils.rbでは、cd( dn )の定義なんかは
> まるっきり同一のものが定義されているので、重なっているのかと
> 思ってました。

あ、ごめんなさい。これはバグです。
(あ…でもいちおう残しとこかな…)


> FileUtilsで、各メソッドをverboseにするには、
> 
> module FileUtis
>   @verbose = true
> end
> 
> みたいなコードを入れなくちゃいけないんでしょうか?

はい。


  In mail "[ruby-list:23064] Re: File Utilities"
    TAKAHASHI Masayoshi <maki / inac.co.jp> wrote:

> > それぞれニーズの違いがありそうなので、それが統合できるかどう
> > かまず話合いが必要ではないでしょうか?
> 
> そうですね。
> ということで、まずは現状をまとめてみます。
(略)
> というわけで、考えなくてはならない点としては、
> 
>  1. ファイルを操作する機能はモジュールの方がいいのか、それとも
>     Fileクラスのクラスメソッドの方がいいのか?
>  2. verboseの指定はメソッド単位がいいのか、モジュール/クラス
>     単位がいいのか?
>  3. verboseを絶対指定しないために、モジュールなりクラスなりを
>     分ける必要はあるのか?
>    
> というところでしょうか。

まず 1 は、やはりモジュールに分離することを主張します。
また同時に 3 に関しても(理由は違うけど)出力担当モジュールは
分解したほうがいいと思います。ただ、前提として分割基準の
修正が必要になりそうです。
今までぼくが futils/fileutils を書く際に想定していた区分は、

  futils はシェルツール向け
  fileutils は大型アプリ向け

ということでした。それで、fileutils にない簡易メソッドが
futils にはあったり、出力がついてたりしたわけです。
ですが高橋さんのまとめを読んでいるうちにどうもこれがよくなかった
ように思いはじめたので、この区分基準を見直してみました。

  1)  プリミティブなファイル操作を集めたモジュール。
  2)  それに出力をつけくわえるモジュール。

理由は、このように分割すれば、decolate パターンを使って出力(など)の
制御ができるようになるからです。
1) と 2) のモジュールは完全に同じインターフェイスを持っていて、
モジュールをとりかえるだけで出力をモジュール単位で制御できる
ようにします。また、2) ではメソッドごとに出力するかどうかの
フラグをうけとるようにします。例えば、

  3) 実際のファイル操作はなにもしないモジュール

を用意して、1) とすげかえて使ったりできます。
(このほうが、フラグでぐちゃぐちゃ分岐するよりかっこいいでしょ?)

それから 2 については、両方あればいいと思います。
モジュール単位で指定したいことは当然あるだろうし、
一部だけオフにできればそれはそれは便利だと思います。
今は futils では @verbose でも選択を行っているわけですが、
これをやめにして、引数での指定をつければいいのではないでしょうか。

ぼくの意見はこんなとこです。


あとは、わたなべさんの意見も聞いてからにしたいです。
-------------------------------------------------------------------
あおきみねろう