問題タブ [object-construction]

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 投票する
1 に答える
357 参照

c# - 依存性注入の作成パターン

私は特にNinjectでC#を使用していますが、問題はNinjectだけにとどまりません。私の問題は、コンストラクター引数が異なるクラスと、注入されたクラスがいくつかあることです。kernel.Get<MyObject>(constructor args here)オブジェクトをインスタンス化するために使用できることはわかっています。カーネルがいたるところにあるので、これは私には正しく感じられません。以下に例を挙げられるように最善を尽くします。

私が今持っているもの:

私はNinjectで次のことができることを知っています:

しかし、それは私には正しく感じられません。私が考えていたのは、Initializeメソッドを使用するように変更することでしたが、これがベストプラクティスであるか、より良い方法があるかはわかりません。

可能な新しいもの:

質問: 「可能性のある新しいもの」は一般的な慣習、悪い考え、不十分な実装での良い考えですか、それともそれを完全に行うためのより良い方法がありますか?

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

c++ - Qtでどちらがより効率的ですか:引数を持つコンストラクターと、後でセッターを持つデフォルトコンストラクター?

タイトルの通りの質問です。

例えば:

また

どちらがより効率的ですか?

編集:繰り返し行わない限り大きな違いはありませんが、私はまだ知りたいと思っています.stackoverflowのガイドラインが示唆するように、意見よりも答えが欲しいです.

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

c++ - C++ の複数のライブラリを持つシングルトンとファクトリ

私はしばらくウェブを読んだり検索したりしてきましたが、良い解決策が見つかりませんでした。これが私がやりたいことです:

抽象基本クラスを定義するライブラリを作成しています - それをIFooと呼びましょう。

ライブラリは、そのためのいくつかの実装も定義しています - それらをFooLibOneFooLibTwoと呼びましょう。

作成プロセスをカプセル化し、ランタイム パラメータに応じてどの具体的な実装を使用するかを決定するために、std::string をファクトリ メソッドにマップするファクトリFooFactoryを使用します (私の場合は boost::function ですが、それは重要ではありません)。ここ)。また、新しいファクトリ メソッドを登録することもできます。次のようになります。

今のところ、ライブラリによって提供される実装 (FooLibOne、FooLibTwo) をFooFactoryのコンストラクターに直接追加しました。したがって、それらは常に利用可能です。一部のライブラリ コードは特定のオブジェクトなどを初期化するために FooFactory を使用します。ティー パターンは頻繁に議論され、Singleton パターンのさまざまな実装がどのように機能するか確信が持てなかったため、これまでのところ、ファクトリに Singleton パターンを使用することは控えてきました。おそらく複数の共有ライブラリなどと組み合わせて。

ただし、工場を回るのは少し面倒な場合があり、これは Singleton パターンが役立つ機会の 1 つだと思います。特に、ライブラリのユーザーは、(既存の) ライブラリコードからもアクセスできるIFooの実装をさらに追加できる必要があると考えています。もちろん、依存性注入 (つまり、コンストラクターを介してファクトリのインスタンスを渡すことを意味します) は、そのトリックを行うことができます (そして、今のところ実行しています)。しかし、さらに柔軟になり、動的オブジェクト作成の第 2 層を導入したい場合、このアプローチは失敗します。意味: 動的に作成されたオブジェクト (抽象基本クラスIBarの実装- BarOneおよびBarTwo - 再びファクトリBarFactory経由)。

BarOneにはIFooオブジェクトが必要ですが、 BarTwoには必要ないとしましょIBar実装の 1 つがそれを必要とする可能性があるため、いずれにせよ、BarFactory にFooFactory提供する必要があります。グローバルにアクセス可能なファクトリがあれば、この問題は軽減され、特定のインターフェイスの実装でどのファクトリが必要になるかを予測する必要はありません。さらに、作成メソッドを実装のソース ファイルに直接登録することもできました。

それは良い考えだと思うので、それを実装する正しい方法は何でしょうか? ファクトリをラップするために、Modern C++ Design ( Lokiライブラリも参照) のSingletonHolderのようなテンプレート化されたアプローチを使用していました。ただし、代わりにマイヤーのシングルトンとして実装したいと思います。しかし、共有ライブラリにはまだ問題があると思います。このソリューションは、GCC (およびできれば MSVC) で動作するはずです。私はデザインの観点から他のアイデアにもオープンですが、よくある「シングルトンは悪だ」という暴言は避けてください。;-)

前もって感謝します。

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

java - EclipseLink プロファイラーは、複数の登録済みオブジェクトが作成されていることを示しています

私の開発環境では、単純な get all JQPL クエリを使用して ReadAllQuery を実行すると、EL プロファイラーを使用した後に、合計時間に時間を追加するたびに実行される読み取りオブジェクト クエリがいくつかあることに気付きました。たとえば、このようなクエリを実行すると、次の Eclipse プロファイル出力が返されます。

複数のステートメントを返しRegister the existing object、ログ出力を見ると、それぞれが作業単位で実行されています。なぜ、どのようにこれらを防ぐことができますか?

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

javascript - ハンガリー語表記がほとんど軽蔑されている場合、「コンストラクターのアッパーキャメルとその他すべてのロワーキャメル」がなぜそれほど人気が​​あるのですか?

少なくともここ StackOverflow では、ハンガリー語表記が悪いと見なされることが最も多いようです(ただし、少数派はまだ支持しています)。

ここ数か月間、私がほとんどのコーディングを行ってきた JavaScript の世界では、本質的に非常によく似た命名規則が採用されているようですが、UpperCamelCaseオブジェクト コンストラクターに名前を付けるという、それに反対する人は見たことがありません。 vslowerCamelCase他のすべてに名前を付けます。

したがって、違いは表面にあるように見えます。

  • ハンガリー語表記ではプレフィックスが使用されますが、JavaScript では大文字と小文字が使用されます。
  • ハンガリー語表記は多くのことを区別できますが、JavaScript は「オブジェクト コンストラクタ」と「非オブジェクト コンストラクタ」しか区別できません。

「システム ハンガリー語」は「アプリケーション ハンガリー語」とは異なると言う人もいます。前者はタイプを示し、後者はタイプがカバーしないものを示します。この場合、通常、「システム ハンガリー語」はまだ悪いと見なされますが、「アプリケーション ハンガリー語」は良いと見なされる場合があります。

JavaScript のキャメル ケーシング規則はシステム ハンガリー語に似ているため、その点では何のメリットもありません。

ハンガリー語表記法に反対する人々の主張は、JavaScript オブジェクト コンストラクターにも当てはまるようです。

  • とにかくコンパイラは型を知っています。
  • これに関しては、IDE の方がはるかに優れています。
  • 型が変わると脆すぎる。
  • コードが乱雑になると、コードが読みにくくなります。

では、より一般的なハンガリー語の表記法では問題がない場所を問題なく使用できるようにする、この JavaScript 規則の違いは何でしょうか?

優れた JavaScript IDE が不足しているのでしょうか? 使用範囲が限られているため、それほど悪くはありませんか? それは、動的言語が実際には型の方法をあまり持っていないためですか? 使いすぎないから問題ないのでは?

(これが SO ではなく、programmers.SE に属している場合は、移行してください。)

0 投票する
5 に答える
208705 参照

c++ - コンストラクターで C++ オブジェクトのメンバー変数を初期化するにはどうすればよいですか?

メンバー変数としていくつかのオブジェクトを持つクラスがあります。宣言時にこれらのメンバーのコンストラクターを呼び出したくないので、オブジェクトへのポインターを明示的に保持しようとしています。何をしているかが自分もわからない。

オブジェクトメンバー変数を初期化するときにコンストラクターがすぐに呼び出される場合、次のことができるのではないかと思いました。

MyClassしかし、コンストラクターにコンストラクターを呼び出してもらいたいですAnotherClass。私のコードは次のようになります。

ファイルBigMommaClass.h

ファイルBigMommaClass.cpp

コンパイルしようとすると、次のエラーが表示されます。

正しいアプローチを使用していますが、構文が間違っていますか? それとも、別の方向からこれに来る必要がありますか?

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

c++ - パラメータに基づいて基本クラスに派生クラスを作成する

私の質問は、オブジェクト作成で列挙型を削除してステートメントを切り替える必要があるデザインパターンとほぼ同じですが、抽象ファクトリパターンがここにうまく適合しているとは思いません。

私は現在、いくつかの既存の DAL/ORM 混合ライブラリのリファクタリング/再実装を計画しています。既存のコードのどこかに、次のようなコードがあります。

したがって、データベース通信を担当するライブラリは、構造体にデータベース エンティティに関するすべての情報を入力し、次に上記の create() メソッドを呼び出して、対応するオブジェクトを ORM に実際に作成します。しかし、基本クラスがそのすべての派生クラスを知っているという考えは好きではありません。また、switch ステートメントも好きではありません。また、これらのオブジェクトを作成するためだけに別のクラスを作成することも避けたいと思います。現在のアプローチについてどう思いますか?この機能をどのように実装しますか?

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

python - Python で静的プロパティからオブジェクトを作成する

カテゴリごとに異なる名前を持つカテゴリクラスがあります。カテゴリの名前は不明で、良いものと悪いものがあります。すべてのカテゴリは同じ動作を共有するため、カテゴリの種類ごとにサブクラスを作成したくありません。問題この方法でさまざまなカテゴリを作成しようとしているときに来ます:

このステートメントは、名前が「良い」に設定されたカテゴリ オブジェクトを返す必要があるため、次のことを試します。

次に、次の出力でカテゴリを作成して使用します。

これが機能しないことに気づき、Java のようなアプローチを試みます。

ここで得られるのは未定義の名前「Category」エラーです。そのため、このようなカテゴリ オブジェクトを作成する Pythonic な方法があるかどうかを質問します。

0 投票する
2 に答える
2944 参照

java - デフォルト コンストラクターを使用しないオブジェクトの作成

N個のクラスを持つパッケージがあり、すべてのクラスをスキャンしてメソッドを介して初期化しています。デフォルトのコンストラクターを持つすべてのクラスが初期化されていますが、デフォルト (ゼロ引数) コンストラクターを持たないクラスは例外をスローします。デフォルトのコンストラクターなしでオブジェクトを作成する方法を知っている人はいますか?

PS私はJavaコードが必要です。

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

javascript - オブジェクトの構築中にオブジェクトで動的キー名を使用する方法は?

オブジェクトの作成中に動的なキー名を使用したいと考えています。

オブジェクトが作成された後の次の行でできることは知っていますが、オブジェクトを作成myObj[key] = 'someValue'しているときにそれを行うことに興味がありました。

それについては同様の質問がたくさんありますが、それらはすべて[]表記法を使用してオブジェクトが作成された後に行われます。