そういえば循環参照するのは設計が悪いっていうのはよく聞くけど、なぜ悪いのかってのをまともに解説してるサイトってあまり見ないような気がする・・・自明すぎて書く必要も無い?
2010-07-20 22:52:33あまり見ないっていうか、自分は悪い理由を説明しろって言われてもまともに説明できる気がしないから、自分は一度も見たことが無いのでしょう。
2010-07-20 22:54:48でも循環参照だから即設計が悪いが必ず真になるとは限らなくて、グラフ構造とか必然的に循環参照になるんじゃね?的なのはある [宮崎産を食べよう]
2010-07-20 22:56:51確か循環参照のあるような設計については、Large-Scale C++ Software Designに詳しくあったはず…
2010-07-20 22:58:29もう7年くらいC++使ってるけど、循環参照なんて一度も起きたことない [プログラミングの魔導書 予約受付中 http://j.mp/bXZ6IN ]
2010-07-20 23:02:07unique_ptr と move semantics さえあれば shared_ptr や intrusive_ptr が無くても生きていける気がする
2010-07-20 23:03:56今回のプロジェクトはshared_ptrも使ってないなぁ。スマポっぽいものといえば、Boost.Optionalくらい。 [プログラミングの魔導書 予約受付中 http://j.mp/bXZ6IN ]
2010-07-20 23:05:42@melponn unique_ptr -> shared_ptr -> (unique_ptr が越えられないバイナリの壁) -> shared_ptr -> unique_ptr
2010-07-20 23:09:06(physical な level での) 循環参照のもろさは要するに modularity じゃね? たとえば testability 考えると A <-> B な状態では A と B 双方に対する test が通って初めて A, B の test とも通ったことになる.
2010-07-20 23:10:59@Cryolite なるほど、普段は unique_ptr を使っておいて、バイナリ境界があるところは shared_ptr でやりとりして unique_ptr に戻すような関数を作って使えと・・・
2010-07-20 23:12:25A <-> B' (mock), B <-> A' (mock), A => A', B => B' から A <-> B じゃだめ?
2010-07-20 23:12:35A <- B という acyclic な依存関係なら, A の test は独立して実行可能であり, A の test の成立の上にさらに独立して B の test を成否を問うことができる.
2010-07-20 23:13:21@melponn unique_ptr に限らず,サードパティ製のものも含めて,おおよそスマートポインタと呼べるものならだいたいこのやり方でバイナリを壁を越えられますよ,多分,知らんけど.
2010-07-20 23:14:50