問題タブ [circular-dependency]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
200 参照

database - テーブル間の1対多の関係でプライマリ関係を指定するための規則は何ですか?

テーブル間に単純な1対多の関係を持つデータベーススキーマを設計する方法を理解しています。そのセット内の特定の関係を主要な関係として指定するための規則またはベストプラクティスが何であるかを知りたいです。たとえば、1人の人が多くのクレジットカードを持っています。私はそれをモデル化する方法を知っています。それらのカードの1つをその人のプライマリとしてどのように指定しますか?私が思いついた解決策は、せいぜいエレガントではないようです。


私の実際の状況を明らかにしようと思います。(残念ながら、実際のドメインは物事を混乱させるだけです。)私は2つのテーブルを持っており、それぞれに多くの列があります。たとえば、PersonとTaskです。いくつかのプロパティしかないProjectもあります。1人の人には多くのプロジェクトがありますが、主要なプロジェクトがあります。1つのプロジェクトには多くのタスクがありますが、1つのプライマリタスクに代替のタスクがある場合もあれば、プライマリタスクがなく、代わりに一連のタスクがある場合もあります。プロジェクトの一部ではないタスクはありませんが、厳密に禁止されているわけではありません。

過度の複雑さや純粋な悪を導入せずに、プライマリプロジェクト、プライマリタスク、およびタスクシーケンスをすべて同時にモデル化する方法を理解することはできないようです。

これは私がこれまでに思いついた中で最高です:

単純な概念にはテーブルが多すぎるようです。


これが私が見つけた非常によく似た状況を扱っている質問です:データベース設計:循環依存

残念ながら、この状況をどのように処理するかについてはコンセンサスが得られていないようで、「正しい」答えはデータベースの整合性チェックメカニズムを無効にすることでした。クールではありません。

0 投票する
3 に答える
1454 参照

c++ - 2 つのクラスとインライン関数

私には2つのクラスがあり、どちらも他のクラスの一部を使用しています。例:

#ifndefそして、上記の例のように定義すると、機能します (ヘッダーの無限再帰を避けるためにいくつかあります)。しかし、クラスにいくつかのインライン関数を追加したいとも思っています。そして、インライン関数の定義をヘッダーファイルに配置する必要があることをここで読みました.cppファイルに配置して他のcppファイルから呼び出したい場合は機能しないためです(実行すると、未定義の参照が発生しますリンクしています)。しかし、ここでの問題は次のようなものです。

エラーが表示されます: 不完全な型 'struct Class2' の無効な使用。

どうすればそれができますか?

0 投票する
1 に答える
506 参照

iphone - iPhone:MKAnnotationの循環インポートでの警告:メソッドが見つかりません

クラス転送を使用して、循環依存の問題を解決しました。現在、「showSumDetails」メソッドが見つからないという警告が表示されます。なぜそれが起こるべきなのか全く分かりません、どんな助けでもありがたいです。ここに少しのコードを含めます:

MyAnnotation.h

MyMapViewController.h

MyMapViewController.m-メソッドが実際に存在し、ヘッダーファイルでも定義されている場所。

しかし、MyAnnotation.mの次のメソッドは、上記のメソッドを見つけることができません:-(

これ以上の情報を提供させていただきます。助けてください!!!

0 投票する
1 に答える
2068 参照

iphone - Three20依存問題

three20 ソースをチェックアウトし、この
ガイドに従って、フレームワークを使用して iPhone アプリを構築しようとしていました。このガイド内では、私もチェックアウトしたテンプレートが使用されています。それらは適切にコンパイルされるはずですが、次のエラーが発生します。

ファイル /Users/myUser/programming/three20/src/build/Debug-iphonesimulator/libThree20.a はそれ自体に依存します。このターゲットには、独自の製品が含まれる場合があります。

誰かがその問題を解決したことがありますか? 作成したいものを含めることについて書かれていましたが、それは不可能です。とにかく、私が見つけた解決策はここでは役に立ちませんでした。

私は実際には何も変えていません!何か案は?

0 投票する
4 に答える
12450 参照

python - 循環インポートの検出

私は約30のユニークなモジュールを含むプロジェクトで働いています。あまりうまく設計されていなかったので、プロジェクトにいくつかの新しい機能を追加するときに循環インポートを作成するのが一般的です。

もちろん、循環インポートを追加すると、気づきません。AttributeError: 'module' object has no attribute 'attribute'明確に定義した場所のようなエラーが発生したときに、循環インポートを行ったことが非常に明白な場合があります'attribute'。ただし、使用方法が原因でコードが例外をスローしない場合もあります。

だから、私の質問に:

循環インポートがいつどこで発生しているかをプログラムで検出することは可能ですか?

これまでに考えられる唯一の解決策importTrackingは、dictを含むモジュール、インクリメントimportingModulesする関数、 1より大きい場合はエラーをスローする関数、およびデクリメントする関数を用意することです。他のすべてのモジュールは次のようになります。importInProgress(file)importingModules[file]importComplete(file)importingModules[file]

しかし、それは本当に厄介に見えます、それを行うためのより良い方法がなければなりませんよね?

0 投票する
4 に答える
3080 参照

java - Eclipseで循環インポートを使用してJavaプロジェクトを構築する

Eclipse GalileoでビルドしようとしているレガシーJava(母国語ではない)アプリがあります。

それは私自身のものではないので、私はデザインの品質について話すことはできませんが、私は次のようなものを持っている多くの例に出くわします:

たとえば、「lib_a」というプロジェクトでは、次のファイルが含まれています。

一方、プロジェクト「lib_b」には次のものが含まれます。

もちろん、問題は、エラーが原因で、外部アーカイブとして他のプロジェクトに追加できる.jarファイルを作成できず、その逆もあるため、1つのプロジェクトをビルドできないことです。

これは、Javaアプリケーションを構築する際にかなり一般的な出来事であるに違いないと私には思えます。ここでは一から書き直すことはできないので、「他の人が何をしているのか」を知りたい。

0 投票する
7 に答える
736 参照

c++ - 2つのクラスが相互に参照する場合のC++のコンパイル

ラッパーが破棄されたときにプールに戻す接続ポインターの周りに単純なラッパーを書き込もうとしていますが、ConnectionPoolとAutoConnが相互に宣言する必要があるため、コンパイルされません。

前方減速を使用しようとしましたが、機能しませんでした。どうすればこれを解決できますか?(g ++を使用)

0 投票する
1 に答える
645 参照

java - Swing GUI での循環参照の回避

このシナリオでは気にする必要はないかもしれませんが、すべてのコンポーネントを含む JFrame と、リモート クライアントからの要求を処理するサーバーのようなクラスの 2 つのクラスがあるとします。ユーザーは GUI を介してサーバー オブジェクトを開始および停止でき、各サーバー オブジェクトで発生するさまざまなイベントが表示されます。明示的なパターン (MVC など) を使用するかどうかに関係なく、JFrame にはサーバー クラスへの参照が必要であり (開始と停止を呼び出すため)、サーバーには JFrame への参照が必要なようです (特定のイベントを通知するため)。 .

これは問題ですか、それともこの状況を間違った方法で見ていますか?

0 投票する
4 に答える
3793 参照

python - Python:型チェックに必要な循環インポート

まず第一に、私は、循環輸入のトピックに対する多くの質問と回答がすでにあることを知っています。

答えは多かれ少なかれ、「モジュール/クラス構造を適切に設計すれば、循環インポートは必要ありません」です。それは本当です。私は現在のプロジェクトのために適切なデザインを作るために一生懸命努力しました、私はこれで成功したと思います。

しかし、私の特定の問題は次のとおりです。チェックするクラスを含むモジュールによってすでにインポートされているモジュールでタイプチェックが必要です。しかし、これはインポートエラーをスローします。

そのようです:

foo.py:

bar.py:

解決策1:文字列比較によってタイプをチェックするように変更すると、機能します。しかし、私はこのソリューションが本当に好きではありません(文字列の比較は、単純な型チェックにはかなり費用がかかり、リファクタリングに関しては問題が発生する可能性があります)。

bar_modified.py:

解決策2: 2つのクラスを1つのモジュールにパックすることもできます。しかし、私のプロジェクトには「Bar」の例のように多くの異なるクラスがあり、それらを異なるモジュールファイルに分けたいと思います。

私自身の2つの解決策は私には選択肢がありません:この問題のより良い解決策はありますか?

0 投票する
3 に答える
26489 参照

c# - 循環依存ソリューション

現在のプロジェクトでは、循環依存の問題が発生しています。ビジネスロジックアセンブリは、SharedLibraryアセンブリのクラスと静的メソッドを使用しています。SharedLibraryには、SQLリーダークラス、列挙子、グローバル変数、エラー処理、ロギング、検証など、多数のヘルパー関数が含まれています。

SharedLibraryはBusinessオブジェクトにアクセスする必要がありますが、BusinessオブジェクトはSharedLibraryにアクセスする必要があります。古い開発者は、共有ライブラリ内のビジネスオブジェクトの機能を複製することで、この明らかなコードの臭いを解決しました(非常に反DRY)。私はこれを解決するための私のオプションについて読み込もうとして1日を費やしましたが、行き止まりになっています。

私はアーキテクチャの再設計のアイデアを受け入れていますが、それは最後の手段としてのみです。では、ビジネスオブジェクトが共有ヘルパーライブラリにアクセスしたまま、ビジネスオブジェクトにアクセスできる共有ヘルパーライブラリを作成するにはどうすればよいですか?