問題タブ [static-methods]

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

.net - インターフェイス/抽象クラスの静的メソッド

まず、インターフェイスまたは抽象クラス(.NET / C#の用語で)が抽象静的メソッドを持つことができない理由を理解しました。次に、私の質問は、最良の設計ソリューションに焦点を当てています。

私が欲しいのは、サードパーティベンダーからオブジェクトA、B、Cを取得した場合に、次のようなメソッドを持つヘルパークラスを持つことができるように、すべて独自の静的メソッドを持つ一連の「ヘルパー」クラスです。

私のAHelper、BHelper、およびCHelperクラスはすべて基本的に同じメソッドを持っているので、これらのメソッドを、これらのクラスが派生するインターフェイスに移動することは理にかなっているようです。ただし、これらのメソッドを静的にしたいので、すべてのメソッドから派生するジェネリックインターフェイスまたは抽象クラスを使用できません。

これらのメソッドを常に非静的にしてから、最初に次のようなオブジェクトをインスタンス化することができます。

ただし、このコードは私には直感的ではないようです。あなたの提案は何ですか?インターフェイスまたは抽象クラスの使用を完全に放棄する必要がありますか(現在の状況)、またはこれをリファクタリングして、探しているデザインを実現できますか?

0 投票する
13 に答える
157244 参照

python - Python のクラス メソッドの違い: バインド、非バインド、および静的

次のクラス メソッドの違いは何ですか?

一方は静的で、もう一方は静的ではないということですか?

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

c# - 静的メソッドでモックする方法は?

私はモックオブジェクトを初めて使用しますが、モックを作成するには、クラスにインターフェイスを実装させる必要があることを理解しています。

私が抱えている問題は、データアクセス層に静的メソッドが必要なのに、インターフェイスに静的メソッドを配置できないことです。

これを回避する最善の方法は何ですか?インスタンスメソッドを使用する必要がありますか(これは間違っているようです)、それとも別の解決策がありますか?

0 投票する
14 に答える
72244 参照

c# - メソッドは静的にすることができますが、そうすべきですか?

ReSharper は、静的にすることができる ASP.NET ページごとに複数の関数を指摘するのが好きです。それらを静的にすると役立ちますか?それらを静的にしてユーティリティクラスに移動する必要がありますか?

0 投票する
6 に答える
7504 参照

php - PHPでの「インライン」クラスのインスタンス化? (メソッドチェーンを容易にするため)

Python や Ruby などの OO 言語で一般的に使用されるイディオムは、オブジェクトをインスタンス化し、オブジェクト自体への参照を返すメソッドをチェーン化することです。

PHP では、この動作を次のように再現できます。

以下を試みると、次の結果になりsyntax error, unexpected T_OBJECT_OPERATORます。

これはおそらく私がやることになる静的メソッドを使用して達成できるようですが、lazyweb を確認したかったのですが、PHP クラスを「インライン」でインスタンス化するためのクリーンで簡単な方法は実際にありますか?この目的のために?

静的メソッドを使用することにした場合、クラスの静的メソッドがクラス自体のインスタンス化を返すのはあまりにも魔術的ですか? (コンストラクターではない独自のコンストラクターを効果的に作成しますか?) ちょっと汚い感じがしますが、恐ろしい副作用があまりない場合は、そうするかもしれません。

get_user() メソッドを使用して UserFactory を事前にインスタンス化することもできると思いますが、上記で尋ねたことに対する解決策に興味があります。

0 投票する
15 に答える
91252 参照

c# - 単一のメソッドを持つクラス -- 最善のアプローチ?

単一の機能を実行するためのクラスがあるとします。機能を実行した後、破壊することができます。これらのアプローチのいずれかを好む理由はありますか?

さまざまな状況でのガイドラインを得るために、意図的に詳細を曖昧にしました。しかし、Math.random() のような単純なライブラリ関数はまったく考えていませんでした。特定の複雑なタスクを実行するクラスをもっと考えていますが、それを行うには1つの(パブリック)メソッドしか必要としません。

0 投票する
9 に答える
93519 参照

php - 親クラスの子クラスの名前を取得する (静的コンテキスト)

再利用とシンプルさを念頭に置いて ORM ライブラリを構築しています。ばかげた継承の制限で立ち往生したことを除いて、すべてうまくいきます。以下のコードを検討してください。

明らかに、これは私が期待していた動作ではありません (ただし、実際の動作も理にかなっています)。したがって、私の質問は、親クラスで子クラスの名前を取得する方法を知っているかどうかです。

0 投票する
6 に答える
10330 参照

c# - C#: 基本クラスの静的メソッドから派生オブジェクトの型を決定する

C# プログラムには、静的な "Create" メソッドを持つ抽象基本クラスがあります。Create メソッドは、クラスのインスタンスを作成し、後で使用するためにローカルに保存するために使用されます。基本クラスは抽象クラスであるため、実装オブジェクトは常にそこから派生します。

基本クラスからオブジェクトを派生させ、派生クラスを介して静的な Create メソッド (基本クラスで 1 回実装) を呼び出し、派生オブジェクトのインスタンスを作成できるようにしたいと考えています。

私がこれをやってのけることを可能にするC#言語内の機能はありますか?私の現在のフォールバックの立場は、派生クラスのインスタンスを引数の 1 つとして Create 関数に渡すことです。つまり、次のようになります。

0 投票する
6 に答える
3528 参照

python - Python クラス宣言でメソッドを呼び出す最良の方法は?

クラスCを宣言していて、いくつかの宣言が非常に似ているとします。fこれらの宣言のコードの繰り返しを減らす関数を使用したいと思います。fいつものように宣言して使用することができます:

おっとっと!私はうっかりf外の世界にさらされてしまいましたが、それはself議論を必要としません (そして、明らかな理由でできません)。1つの可能性はdel、私がそれを使用した後の関数です:

fしかし、宣言後に後でもう一度使用したい場合はどうすればよいですか? 関数を削除しても意味がありません。私はそれを「非公開」にして (つまり、その名前の前に を付けて__)処理することもできますが、異常なチャネルを介してオブジェクトを@staticmethod呼び出すと非常にファンキーになります。staticmethod

staticmethod記述子であるオブジェクト自体は呼び出し可能ではないため、上記の狂気を使用する必要があります。staticmethodオブジェクトを呼び出す前に、オブジェクトによってラップされた関数を回復する必要があります。

これを行うためのより良い方法が必要です。クラスで関数をきれいに宣言し、宣言中に使用し、後でクラス内から使用するにはどうすればよいですか? 私もこれをしなければなりませんか?