>>
http://kmaebashi.com/programmer/c_yota/module.html
>まずモジュールの定義が私と違っていたようです。
>(ぱ)さんの所で言うモジュールは「ヘッダファイル単位」で、私の言っていたのは「ライブラリ単位」だったようです。
むちゃくちゃですね。
「ヘッダファイル単位」っていったいどういう意味ですか? 私がどこかにそんなことを
書きましたか? (書いてあるというのなら引用してください) ご自分が何を言っているか
自分で理解していますか?
「モジュール」が先に決まって、それに対応するヘッダファイルを作ることはあっても、
ヘッダファイルが先に決まることはありえないでしょう。常識的に考えて。
よってモジュールが「ヘッダファイル単位」などということがあるわけがありません。
これではモジュール切り分けの指針がどこにもないではないですか。
件のページで、私はこう書いています。
>さて、Cでは、ソースファイル単位で名前空間の隠蔽が出来ますが、プログラムの
>規模がさらに大きく、ソースファイルの数自体が膨大になってくると、今度は、
>いくつかのソースファイルをまとめて、もう1段階大きな固まりを作る必要が
>出てきます。以下、この文章中では、この固まりのことを「モジュール」と呼びます。
># こういうのは「ライブラリ」と呼ばれることもありますが、「ライブラリ」と
># 言うとどうも「下請け」的なイメージがあって、私にはちょっとしっくり来ません。
SEさんは、Cでは、「せいぜいDBアクセスとか通信部分など」しかモジュール化しない
そうですが、これはやはり私と同様、「ライブラリ」には下請け的なイメージを
持っていて、DBアクセスとか通信部分のような下請け部分しかモジュール(SEさん用語の
ライブラリ)にはしない、と言っているわけでしょう。
では、「せいぜいDBアクセスとか通信部分など」以外の部分は、Cの時代には、
どのように作っていたのですか? いっさい分割なしのぐちゃぐちゃですか?
>私は、実装隠蔽の単位としてクラスは適当だと思っていて、機能を単位とするのは間違いだと思います。
で、なぜそう思うわけですか?
具体的にどのような例で、クラスで分割するとうまくいって、機能を単位とすると
うまくいかないわけですか?
具体例としてSEさんから出てきたのは、[1287]のこの例だけです。
http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs&from=1287&range=1
>ちなみに簡単に変更できた例は、
>メモリ上で頻繁に検索するデータが100件から6万件に変わった時の事でした。
>検索にキャッシュやヒストリー機能などあらゆる機能を組み込み高速化しましたが、
>修正したクラスは1つです。もしCの構造化で組んでいたら、修正箇所と影響範囲を
>調べるだけで嫌になっていたと思います。
これを普通に読めば、なにかの検索機能という「機能を単位とした」モジュールが
あって、それがうまいこと隠蔽されていたから修正箇所がそこだけで済んだ、という
話にしか読めません(誤読であればご指摘ください)。
そこで私は、「そんなものはオブジェクト指向以前の、モジュール化で達成している
ことではないか(よって、オブジェクト指向の利点ではない)」と指摘しているわけです。
ここでそう書いてますよね?
http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs&from=1292&range=1
>関連する操作やデータをまとめる、というのは普通にモジュール化であって、
>私が「疑りぶかい~」で書いたオセロの例の、Cでstaticで隠蔽を行った
>board.cで達成していることでは?
機能単位のモジュール化では実現できず、オブジェクト指向なら実現できることの
具体例を示してもらわないと、SEさんにとってのオブジェクト指向の定義がさっぱり
わからないです。