レガシーコードと 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:レガシーなコードに慣れてしまっている