問題タブ [decoupling]
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.
c# - デカップリングのためにインターフェイスの代わりにデリゲートを使用します。良いアイデア?
GUI アプリを作成するときは、アプリケーションを「制御」または「調整」する最上位クラスを使用します。最上位クラスは、ネットワーク接続の初期化、アプリケーション全体の UI アクションの処理、構成ファイルのロードなどの調整を担当します。
GUI アプリ コントロールの特定の段階で、別のクラスに渡されます。たとえば、ユーザーが認証されると、メイン コントロールがログイン画面からデータ入力画面に切り替わります。さまざまなクラスは、最上位のコントロールが所有するオブジェクトの機能を使用する必要があります。以前は、オブジェクトを下位のコントロールに渡すか、インターフェイスを作成するだけでした。最近、オブジェクト全体ではなく、メソッド デリゲートを渡すように変更しました。主な理由は次の 2 つです。
- 単体テストでは、クラスよりもメソッドをモックする方がはるかに簡単です。
- 従属クラスが使用しているメソッドを正確にクラス コンストラクターで文書化することにより、コードが読みやすくなります。
簡略化されたコード例を以下に示します。
私の質問は、私はこのアプローチを好みますが、次の開発者はどのようにそれを見つけるのでしょうか? サンプルおよびオープン ソースの C# コード インターフェイスは、デカップリングの推奨されるアプローチですが、デリゲートを使用するこのアプローチは、関数型プログラミングに傾いています。後続の開発者が、彼らにとって直感に反するアプローチについて息を切らして罵倒する可能性はありますか?
javascript - javascript プログラミングをフレームワークから分離する方法は?
Javascript フレームワークについて 1 つ質問があります。アプリケーションで ExtJs を使用しているのですが、ライセンスなどの問題が多いので、これはどうなのかなと思っています。
あるJavascriptフレームワークから他のフレームワークに簡単に切り替えることができるように、Javascriptを開発する際にいくつかの戦略に従う方法はありますか?
database-design - BDUFを使用して、アプリのアジャイル開発をデータベースから切り離す方法は?
G'day、
私は、データベースがアジャイルアプローチを使用して設計されるべきではないことを示唆する優れた本「97Things Every Software Architect should Know」(サニタイズされたAmazonリンク)のDanChakによる記事「DatabaseasaFortress 」を読んでいました。
アジャイルアプローチとデータベースに関するSOの質問があります。「アジャイル開発とデータベースの変更」には、アジャイル開発アプローチをカバーするいくつかの優れた回答があります。実際、答えの1つは、DBの各更新に何が必要かについての素晴らしいアイデアを提供します。;-)
しかし、Dan Chakの記事を読んだ後、アジャイルアプローチが大規模システムに本当に適しているかどうか疑問に思っています。
もちろん、これは、採用される最終的な設計に複雑な変換レイヤーを追加せずに、BDUFデータベース設計と相互作用するアプリケーションのアジャイルアプローチをどのように切り離すのが最善かという問題につながります。
助言がありますか?
乾杯、
asp.net-mvc - .netmvc単一管理セクション複数サイト
望ましい結果:
個別のプロジェクトとしての4つの顧客向けサイト4つのサイトすべてで使用される1セットの管理コード
私の現在の設定は4つのプロジェクトです:
モデル/エンティティのコア
リポジトリのデータ
コントローラー用のコントローラー
ビューのWeb
現在、Webプロジェクトには、管理者側と顧客側のビューが含まれています。それを管理プロジェクトと4つの「顧客」プロジェクトに分割したいと思います。
私はグーグルでウェブアプリからウェブアプリを参照することにほとんど成功していません。haacked.comのエリアについて読んだことがありますが、それは正しくないようです。マークアップのデバッグ/コーディング中に苦痛を伴うため、特にdllにビューを埋め込みたくありません。明らかに、コードの複数のコピーは必要ありません。
誰かがこれを行うための可能な方法を指摘または提案できますか?私は少し困惑しています。
c# - 分離のためのLinq-to-Sqlとのインターフェースの使用
モデルクラスをインターフェイスにリファクタリングしています。モデルクラスは、Linq-to-Sqlを使用して自動生成されます。
InsertOnSubmitメソッドは、IFooではなくFooのインスタンスを取ります。インスタンスを(Foo)にインラインでキャストできますが、これは機能しますが、これを行うためのよりクリーンな方法はありますか?
すでにStructureMapを使用していますが、Addメソッドに属性を追加して、マッピングに基づいてタイプを解決できますか?
または、モデルクラスのメソッドのいずれかをオーバーライドしたり、部分的なイベントを使用してこれを実行したりできますか?
python - Pythonプロジェクトでのリソースの管理
多くの非コードファイルを使用しているPythonプロジェクトがあります。現在、これらはすべて画像ですが、将来的には他の種類のファイルを使用する可能性があります。これらのファイルを保存および参照するための適切なスキームは何でしょうか?
メインディレクトリに「resources」フォルダを作成することを検討しましたが、問題があります。一部の画像は、私のプロジェクトのサブパッケージ内から使用されています。これらの画像をそのように保存すると、結合が発生しますが、これは欠点です。
また、現在のディレクトリに依存しないこれらのファイルにアクセスする方法が必要です。
c# - C# の "using" ディレクティブ キーワードに代わるものはありますか?
NDC で Bob Martin のエピソードを見終わったところです。彼は、ページの上部にある C# の "using" ディレクティブは、コンポーネント間で作成/暗示される密結合のために悪いと言っていました。
プロジェクト参照と using ステートメントを追加せずに、外部の .dll を使用するにはどのような方法がありますか?
V6 では、ProgId の文字列でオブジェクトを作成できたのを覚えています。それが私が探している手法かどうかはわかりませんが、プロジェクト参照を使用する必要のない言語の例です。 dll.
編集:これは会議へのリンクです。申し訳ありませんが、プレゼンテーションの正確な引用または議事録はありません。記憶によるものです。
asp.net - セキュリティの処理と分離
私は3つのレイヤーでアプリケーションを設計しようとしています:
1) データアクセス層
2) ビジネス層
3) UI
私はクラスを分離したままにしようとしているので、ビジネス層では次のようなデータ アクセス クラスのインターフェイスを作成しました。
そして、インターフェイスをパラメーターとしてサービス コンストラクターに渡します。
ただし、たとえば CountryService では、現在のユーザーとそのアクセス許可を読み込む必要があるため、操作を適用できるかどうかを確認できます。
つまり、SecurityDataAccess オブジェクトをインスタンス化し、それをビジネス レイヤー アセンブリの SecurityService のコンストラクターに渡す必要があります。これは、オブジェクトの分離を維持するために避けようとしています。現在、ビジネス アセンブリの DataAccess アセンブリへの参照さえありません。
ここで IoC コンテナーを使用することを考えています。外部構成を使用して、構成ファイルから適切なクラス/アセンブリを取得できました。しかし、IoC コンテナーは物事をシンプルに保つために 1 か所で使用する必要があり、ほとんどの場合、最上位アセンブリ (UI アセンブリ) にする必要があると言われているため、それが正しい解決策であるかどうかはわかりません。
この問題を解決するための提案はありますか?
c# - エンジン/コントローラーにユーザー インターフェイス要素を登録する
現在、標準の UI コントロールを備えた小さなゲームを作成しています。
これまでのところうまく機能していますが、コードビハインド ファイルでコントロールを管理していることが気に入らないのです。(C#)
すべての要素を切り離そうとしているので、すべてのデータ管理とユーザー インターフェイスのロジックを処理する別のエンジン/コントローラーが必要です。
コントロールをエンジンに登録して、呼び出すすべてのメソッドでそれらを渡す必要がないようにする可能性はありますか?
現在、関数を呼び出すたびにコントロールを渡す必要があります..
前もって感謝します!
service - PrismアプリCALのメニューサービス
Prism (CAL) フレームワークを作成しようとしています (これが CAL への最初の進出です)。地域のメニュー項目を登録するためのサービスを考案するのに苦労しています)。これが私がこれまでに思いついたものです...
私がやろうとしていることを行うためのより良い方法はありますか? 乾杯、ジェイソン