「pimpl」のすゝめ

@SubaruG センセが pimpl についてわかりやすくつぶやいていたのでまとめました。C++ ならでは(?)の解説ですね。
9
普通のC++使い、銀天すばる @SubaruG

@yreeen そういう場合はデザインが悪いと解釈します。

2010-08-18 19:22:56
普通のC++使い、銀天すばる @SubaruG

@yreeen っていうか、肥大化するとしても実装部分なので痛くも痒くもないというか。

2010-08-18 19:25:17
ドクターねるねるねるね @DrNerunerunerun

@SubaruG 僕は実装もあんまり肥大化させたくないんですよね。コード内部のバグならまだしも、外部に原因があった場合とかをつきとめにくいです。

2010-08-18 19:28:13
普通のC++使い、銀天すばる @SubaruG

継承を使った多態をクライアントコードで扱える程、僕の頭は賢くないので、実装部分はともかく、アプレケーションコードでは継承関係が一切出てこないようにしてますハイ。

2010-08-18 19:28:44
普通のC++使い、銀天すばる @SubaruG

s/アプレケーションコード/アプリケーションコード/

2010-08-18 19:29:04
普通のC++使い、銀天すばる @SubaruG

@yreeen 外部に露出する面を増やしてるから外部原因のバグが生まれるのでは?

2010-08-18 19:29:36
普通のC++使い、銀天すばる @SubaruG

継承による多態が強力で効率的なのは認めるんだけど、ちょっと強力すぎるというかなんというか。

2010-08-18 19:31:09
ドクターねるねるねるね @DrNerunerunerun

@SubaruG あ、外部ってのはエンコーダが出力したファイルとかです。マルチメディア系のファイルは特に一部のエンコーダが仕様に準拠してないとかよくありまして。

2010-08-18 19:33:04
ドクターねるねるねるね @DrNerunerunerun

このファイル形式ならこう、あれならこう…っていう条件分岐があるだけでデバッグが苦になるから不思議。

2010-08-18 19:33:52
普通のC++使い、銀天すばる @SubaruG

@yreeen それだったら実装が大きいとか関係ないんじゃないですかね?

2010-08-18 19:34:42
普通のC++使い、銀天すばる @SubaruG

内部実装として継承や多態を使うことは、たまにあるけど、それを露出させることはしない。理由は、実装が変わったときにクライアントコードも変えなきゃいけないから。

2010-08-18 19:36:58
普通のC++使い、銀天すばる @SubaruG

まーぶっちゃけ好みの問題ではある。

2010-08-18 19:38:04
ドクターねるねるねるね @DrNerunerunerun

実装が大きいとデバッグ中にイラッとくる。特に動的にデバッグできない時が

2010-08-18 19:39:01
普通のC++使い、銀天すばる @SubaruG

@yreeen 継承関係が変わったら変えなきゃダメでしょう。少なくとも。

2010-08-18 19:39:06
普通のC++使い、銀天すばる @SubaruG

@yreeen 実装が大きいっていっても、その中で構造化は当然に行いますよね?

2010-08-18 19:39:54
ドクターねるねるねるね @DrNerunerunerun

@SubaruG 行ってます。が、やっぱり分かれてたほうが見やすくて好きです。

2010-08-18 19:41:20
普通のC++使い、銀天すばる @SubaruG

@yreeen ん? 実装が大きい場合って、細かく分けて実装するんじゃないんですか?

2010-08-18 19:42:47
ドクターねるねるねるね @DrNerunerunerun

継承による多態は内部の違いを外部に意識させないように使うもので、その内部の変化を外部で考えないといけないようなコードは設計が悪い…と思っちゃうんだよな。

2010-08-18 19:42:54
普通のC++使い、銀天すばる @SubaruG

@yreeen それを「構造化」と表現したつもりなのですが。

2010-08-18 19:43:03
ドクターねるねるねるね @DrNerunerunerun

@SubaruG クラスが完全に分かれてるほうが個人的に楽なんです。

2010-08-18 19:43:53
普通のC++使い、銀天すばる @SubaruG

@yreeen ですかー。いや僕も内部実装でクラス分けますし、その気持はわかります。

2010-08-18 19:44:51
ドクターねるねるねるね @DrNerunerunerun

完全に はおかしいな。同じインターフェースを継承した横のつながりになってるし

2010-08-18 19:45:11