オブジェクト指向の闇

2009年7月2日

ネタ元 > http://d.hatena.ne.jp/kwatch/20090630/1246377005

要は、配列の内容を連結してたとえば CSV 形式にしたいとするときに、

  1. 配列.join(",")
  2. ",".join(配列) ' separator.join()

のどちらが適当か?で、Ruby は 1 で、Python では 2 らしいんだが、2 のそれは気持ち悪くない?って話らしい。

いろんな解釈はあるのだろうけど、そもそも A (配列) と B (セパレータ) を混ぜ合わせて C (CSV) を作るといった場合、A と B は対等なのだから、join() メソッドがどちらかのインスタンスに連動していること自体が気持ち悪くないですか?というのが私の意見。要は、

  1. 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)、で実装すればいいんじゃないかなあ?とか。

なんかこのあたり、なんでもインスタンスメソッドにしてしまって、かえって難しくしていると感じるのは、私が構造化文化の旧世代に人だからなんですかな…






カテゴリー: Program, アルゴリズム, 情報技術

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org