虹裏img歴史資料館

ここでは虹裏imgのかなり古い過去ログを閲覧することができます。新しいログはこちらにあります

23/06/14(水)19:53:08 相互参... のスレッド詳細

削除依頼やバグ報告は メールフォーム にお願いします。個人情報、名誉毀損、侵害等については積極的に削除しますので、 メールフォーム より該当URLをご連絡いただけると助かります。

画像ファイル名:1686739988155.jpg 23/06/14(水)19:53:08 No.1067502483

相互参照するようなクラスの宣言のベストプラクティスが分からん

1 23/06/14(水)19:53:25 No.1067502630

全て壊せ

2 23/06/14(水)19:56:49 No.1067504243

そのベストプラクティスは本当にベストなの?

3 23/06/14(水)19:57:53 No.1067504713

設計が悪いのでは

4 23/06/14(水)20:00:55 No.1067506067

バッドプラクティスにベストプラクティスがあるわけねーぜ!

5 23/06/14(水)20:13:38 No.1067512541

上に管理クラスを作って、それが2つを管理するようにして 2つのクラス間の通信は管理クラスのメソッド呼んでやるようにすればよくない?

6 23/06/14(水)20:18:51 No.1067515389

片方は前方宣言しないとコンパイルが通らないはず それ以上はなんもわからん

7 23/06/14(水)20:23:28 No.1067517528

完全に対等な関係ってほぼ無いから 主体となる方がもう一方を取り扱うようにすればいいんじゃね?

8 23/06/14(水)20:26:08 No.1067518812

片方を抽象クラスを継承させたクラスにして メインのクラスは抽象クラスを使う

9 23/06/14(水)20:26:39 No.1067519076

クラスAとBがあってAのメンバ関数でvectorを引数にとってBのメンバ関数でA内部で定義されたenum型を引数に取るって形で相互参照になってコンパイル通ってなかった 他のクラスで使うからenumをAの外に定義すればコンパイル通るんだけどAの外部でそのenum使うのここだけだからなんか違う気もするなって…

10 23/06/14(水)20:29:18 No.1067520278

Bから使ってるなら外部から使ってるって言っていいと思うよ そんなにAの外に出したく無いならBをAの中に入れるとか

11 23/06/14(水)20:36:30 No.1067523266

>そんなにAの外に出したく無いならBをAの中に入れるとか あーなんかコレが正解な気がしてきた ありがとう

12 23/06/14(水)20:37:24 No.1067523663

クリーンアーキテクチャ

13 23/06/14(水)20:42:58 No.1067526060

たぶんこれ典型的な設計ミスだと思う 依存性の逆転とかでググってみて

14 23/06/14(水)20:45:12 No.1067526981

>たぶんこれ典型的な設計ミスだと思う >依存性の逆転とかでググってみて pimplにしろってこと?

15 23/06/14(水)20:45:35 No.1067527133

俺だったらAB2つのインターフェースクラスとenumの定義を先にやってから 実体を実装するかなあ でもABの影響が循環してるのがそもそもアレなんで Bのメンバ関数がAの何がしを触るよりBのメンバ関数をAが呼び出す設計がいい そしてBはAがなくても成立するクラスとして設計すべき

16 23/06/14(水)20:46:20 No.1067527499

>クラスAとBがあってAのメンバ関数でvectorを引数にとってBのメンバ関数でA内部で定義されたenum型を引数に取る この時点でもうだいぶ破綻してねえかな AとBと共通インターフェースのCがいるんじゃねえのか

17 23/06/14(水)20:46:41 No.1067527652

>pimplにしろってこと? 全然関係ねえ…

18 23/06/14(水)20:48:18 No.1067528334

とりあえずenumは名前空間にでも放り込んで追い出した方がいいんでない

19 23/06/14(水)20:52:41 No.1067530163

>Bのメンバ関数がAの何がしを触るよりBのメンバ関数をAが呼び出す設計がいい まさにこれ 依存性の逆転

↑Top