SSブログ

継承による共通化とか、Mixin とか [日記]

先日、継承で処理を共通化しようとしてるコードを見た。
まだそんなことやってるの・・・という気分。

共通化できる部分を無理に発見して基底クラスにして、その基底クラスのメソッドで呼び出しているメソッドを、派生クラスで定義してあげないといけない設計。
分かりづらいくてめんどくさいことになっている。
共通の処理を括りだして基底クラスにしてしまうという発想になっているのがダメだと思われ。

正直、こうなっているところはもう直せないので、継承関係を維持したまま継ぎはぎしていくことになる。
「継承より委譲のほうがいい」
と言っているわけではない。
委譲も、無理やりデザインパターンに当てはめようとしたり、無理やりデザインパターンの用語を
使おうとして、かえってわかりづらくなっているのも見る。
(これは、自分が、パターンを理解してないのもあるが)
今までに、 Mixin という名前のコードを見たことが何回もあるが、 Zope みたいなすごいフレームワークで頭のいい人たちが入念に考えた Mixin 以外は、使いづらいだけで、ちゃんと付けはずしができるようになっていて、定義をみたら「あー、こういう機能あるのねー」ってわかるの、見たことない。

そういうのは、おじいちゃんが昔のやり方に固執しているわけではなく、むしろ勉強熱心な若者がやっていて、自分のほうがよっぽどおじいちゃんなので、つらい。

根底には、ソースコードの重複を排したいという気持ちがあるんだと思うんだけど、全然違う処理でたまたま、同じような実装になることも多々あるので、ソースコードの重複を恐れすぎだと思う。
(いや、わかんない。僕が同じような処理を書き過ぎなのかもしれない)

コピペコーディングが良い言うわけではなく、最後は加減ということになって、結局のところ、そういう加減が、これが正解というのがなくて一番難しい。

コメント(0) 
共通テーマ:日記・雑感

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

Facebook コメント