ネタ元 > http://d.hatena.ne.jp/kwatch/20090630/1246377005
要は、配列の内容を連結してたとえば CSV 形式にしたいとするときに、
- 配列.join(",")
- ",".join(配列) ' separator.join()
のどちらが適当か?で、Ruby は 1 で、Python では 2 らしいんだが、2 のそれは気持ち悪くない?って話らしい。
いろんな解釈はあるのだろうけど、そもそも A (配列) と B (セパレータ) を混ぜ合わせて C (CSV) を作るといった場合、A と B は対等なのだから、join() メソッドがどちらかのインスタンスに連動していること自体が気持ち悪くないですか?というのが私の意見。要は、
- String.join(配列,",") ' C = String.join( A , B )
でよろしいのでは?ということ。
にたような話で、String.Add(String) があるけど、
C = A.Add(B)
って書くのって馬鹿臭くない?
A.Add(B) ' A = A + B (戻りはvoid)
なら辛うじて理解できるけど、A が immutable で Add() を行っても A 自体が変更されないなら、インスタンス.Add()なんて不要ではないかと。もっとも自作クラスでオペレータオーバーロード不可という状況なら仕方がないかもしれませんが、それでもstatic(shared)メソッドで、String.Add(String,String)、で実装すればいいんじゃないかなあ?とか。
なんかこのあたり、なんでもインスタンスメソッドにしてしまって、かえって難しくしていると感じるのは、私が構造化文化の旧世代に人だからなんですかな…