Hatena::ブログ(Diary)

ろじかるんるんものがたり

2011-02-28

レガシーコードと shared_ptr

もうちょっと続くんじゃ。

http://shinh.skr.jp/m/?date=20110226#p03

基本カスタムデリータとか使った時点で負けてる感が強いというか…

全く正しいです…設計まともなら、カスタムデリータとかまあ普通出番ないですね。これは重ファク*1です。

あと shared_ptr で受ける API ってのは、 heap にしかアロケートされないオブジェクト以外で作っちゃいけないと思うんだけどな。ていうかたぶんそいう場合はたぶん侵入型の参照カウンタ使うべきな気がするので、たぶん shared_ptr で受ける API ってのは一般的に言って間違ってるんじゃないかな…

これも正しいんですが、しかし時には shared_ptr で受ける API のものを使うしかないときがあるので、そのときは null deleter でごまかそうっていう話で…勿論 null deleter 使うときには、リソースの安全性はプログラマが保障してやらないといけないんで、まあこれも負けた感強いですね…でも reinterpret_cast と一緒で押すのも引くのもだめなときにはぶち破るしかないんだ、みたいな話です。

あと shared_ptr で受ける API が一般的に間違ってるとなると Boost のデザインゴールがグニャアってなるので可哀想みたいなのはあります。

そんなわけで、ボクの発表を素晴らしく実用的とか思っちゃうのは、かなりレガシー体質*2になってると思うので気をつけましょう!綺麗なコードで明るい未来!

*1:重要なファクター

*2レガシーなコードに慣れてしまっている

shinichiro_hshinichiro_h 2011/03/02 03:52 あ、すいません「あと shared_ptr で受ける API ってのは、 heap にしかアロケートされないオブジェクト以外で作っちゃいけない」はおかしいですね。所有権渡すなり共有するなりで、所有権が増えるケースなら普通にいいと思います。

所有権が増えないのに shared_ptr で受けてる API はおかしいんじゃないかな、と書くべきでした。つまり参照やらポインタでいいだろうに…という。

lyrical_logicallyrical_logical 2011/03/03 01:39 >参照やらポインタでいいだろうに…
shared_ptr 使わなくても生きてるの自明か、まあもしくは死なないようなコードを書くなら、まあそれでいいと思います。
すみません、そもそもどこに対するツッコミかイマイチ分かりきってない感があります。そんな突っ込まれるような shared_ptr でうける API の例出しましたっけ…?

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/lyrical_logical/20110228/1298914755