問題タブ [api-design]

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 に答える
86 参照

java - ネストされたオブジェクトの数を返すメソッドには、どの名前を付ける必要がありますか?

クラス Gallery と Image があるとします。1 つのギャラリーに多数の画像を含めることができます。

ギャラリーには、ネストされた画像の数を返すメソッドが必要です。私の提案:

size ()これら 3 つの提案のそれぞれの例をさまざまな API で見ました (もちろん、コレクション APIのメソッドのように、別の名詞を使用したり、使用しなくてもかまいません)。

あなたは何を好みますか、そしてその理由は何ですか? (私の反対の考えの 1 つはcountImages ()、この名前が、このメソッドが複雑な計算を行うとユーザーに思わせる可能性があるということです。)

0 投票する
8 に答える
298 参照

java - APIメソッドのより良い名前を教えてください

序章:

Picasa、Flickr、その他の画像サービスへのアクセスを提供するAPIに取り組んでいます。

私はクラスWebAlbumを持っています(ネストされた写真、許可されている場合はアルバム、およびいくつかのメタ情報へのアクセスを提供します)。

My APIを使用すると、ユーザーはアルバムを読むだけでなく、新しいアルバムを作成することもできます。一般的なケースでは、新しいアルバムを作成するために、APIユーザーはファクトリメソッドを使用する必要があります。ファクトリメソッドはアルバムを作成してからメソッドを呼び出しますWebGallery#addAlbum (newAlbum)

ただし、Flickrでは空のアルバムを作成できません。新しいアルバムには、少なくとも1枚の事前定義された写真が必要です(おそらく素晴らしいアルバムプレビューを作成するため)。Flickrの用語では、この最初の写真はと呼ばれPrimary Photoます。したがって、Flickrのアルバムを作成するには、ファクトリメソッドを使用してから、新しいアルバムに画像を追加してから、を呼び出す必要がありますWebGallery#addAlbum (newAlbum)

問題:

現在、WebAlbumクラスにはこのメソッドがあります

PrimaryPhotoはFlickrの用語であるため、この名前を残すことはできません。に変更できます

同じ意味の短い名前を提案してください。

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

api - 制限付き API (クライアント ユーザーに制限を課す)

私は API を書いていますが、次のパターンに遭遇しました。

私の API は、クライアント ユーザーの書き込みを強制します。コードは、異なる資格情報でログイン/ログアウトすることにより、ポータル上の x 個のサイトをテストする必要があります。別の開発者が独自のログイン コードを作成する可能性を当てにすることはできません (これは一般的なコードになります)。そのため、ログインおよびログアウト メソッドとメイン テストを実装するプライベート コンストラクターを使用して抽象クラスを作成しました。メソッド (ユーザーはこれをオーバーライドして、0.

このような制限を課す API は見たことがありませんが、これはチーム向けの API です。

私はこれで正しい軌道に乗っていますか?

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

eclipse - EMF の eGet が EObject ではなく Object を返すのはなぜですか?

Java で EMF フレームワークを使用していくつかのコードに取り組んでいますが、非常に使いにくいです。たとえば、タイプ セーフな EMF の上に OCL のようなクエリ API を実装することはできません。

理由の 1 つは、eGet()aがではなくのみをEStructuralFeature返すことです。したがって、私が書くものはすべて、安全ではなく、パフォーマンスが悪く、再利用可能な方法で一般化できない null チェック、型チェック、および型キャストの多くを使用する必要があります。ObjectEObject

EObjectEMFが任意のObject値のラッパーでダミーの実装を生成しないのはなぜですか?

単純なスローであってもEObject、インターフェイスを実装するのは本当に面倒です (API が大きすぎます)。同じことが、モデルを上に移動するのが苦痛になる方法にも当てはまります。EClassUnsupportedOperationExceptioneContainer()

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

json - 要約情報を取得するためのRESTAPIデザイン

Groupと呼ぶリソースを管理するRESTAPIを使用しているシナリオがあります。グループの概念は、Googleグループのディスカッションフォーラムに似ています。

これで、2つのGETアクセス方法があり、別々の表現が必要だと思います。

最初のGETアクセス方法は、グループに関する最小限の情報を取得します。group_idを指定すると、次のような最小限の情報を返す必要があります

2番目のGETアクセス方法は、次のような本質的により統計的な要約情報を取得します。

これらのデータアクセス方法を分離したいので、現在この設計を計画しています。

後者のみがグループに関する統計情報を返します。あなたはこのことについてどう思いますか ?

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

http - HTTP Varyヘッダーを使用して、リクエストを処理するための戦略を決定します

フォーラムにトピックを作成する特定のRESTエンドポイントがあります。しかし、リクエストを処理するときに別の戦略を適用したいと思います。たとえば、クライアントAが電話をかける場合は、モデレートを実行します。クライアントBが電話をかけた場合は、別のことを行います。最も簡単なのは、区別するためのクエリパラメータを追加することです。

もう1つの優れたアイデアは、VaryHTTPヘッダーを使用することです。

このアプローチに問題はありますか?

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

rest - REST API の表現をフィルタリングするために内部アンカーを使用することは理にかなっていますか?

Web フォーラム リソースの統計情報を取得するためのREST URI に関する以前の質問の補足として、内部アンカーをフィルター ヒントとして使用できるかどうかを知りたいです。以下の例を参照してください。

a) すべての統計を取得します。

b) 人気のあるトピックだけをGETする

c) ランキング上位のユーザーだけをGETする

または、クエリ パラメータを使用する必要がありますか?

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

c# - .NET で多重継承の代わりに暗黙的な変換を使用する

特定のタイプのオブジェクトを 2 つの異なるタイプとして使用できるようにしたい状況があります。「基本」型の 1 つがインターフェイスである場合、これは問題になりませんが、私の場合は、両方とも具象型であることが望ましいです。

基本型の 1 つのメソッドとプロパティのコピーを派生型に追加し、派生型からその基本型への暗黙的な変換を追加することを検討しています。その後、ユーザーは、複製されたメソッドを直接使用するか、基本型の変数に代入するか、基本型を取るメソッドに渡すことにより、派生型を基本型として扱うことができます。

このソリューションは私のニーズによく合っているようですが、何か足りないものはありますか? これが機能しない状況や、API を使用する際に単純化する代わりに混乱を招く可能性がある状況はありますか?

編集:私の特定のシナリオの詳細:

これは、自動化されたトレーディング システム開発環境であるRightEdgeでインディケータが記述される方法の潜在的な将来の再設計のためのものです。価格データは、一定期間 (1 分、1 日など) の始値、安値、高値、終値の値を持つ一連のバーとして表されます。指標は、一連のデータに対して計算を実行します。単純なインジケーターの例は移動平均インジケーターです。これは、入力の最新のn 個の値の移動平均を示します。ここで、 nはユーザー指定です。移動平均は足の終値に適用されるか、別のインジケーターの出力に適用されて平滑化されます。

新しいバーが入るたびに、インジケーターはそのバーの出力の新しい値を計算します。

ほとんどのインディケータには 1 つの出力シリーズしかありませんが、複数の出力があると便利な場合があり ( MACDを参照)、これをサポートしたいと考えています。

したがって、インジケーターは、新しいデータが入ったときに呼び出されるメソッドを持つ「コンポーネント」クラスから派生する必要があります。ただし、出力シリーズが 1 つしかないインジケーターの場合 (これがほとんどです)、それはそれらにとって良いことです。シリーズ自体として行動する。そうすれば、ユーザーは を使用するSMA.Current代わりに、SMA の現在の値に を使用できますSMA.Output.Current。同様に、 よりも のIndicator2.Input = Indicator1;方が望ましいIndicator2.Input = Indicator1.Output;です。これは大した違いではないように思えるかもしれませんが、ターゲット ユーザーの多くはプロの .NET 開発者ではないため、できるだけ簡単にしたいと考えています。

私の考えは、出力系列が 1 つしかないインジケータに対して、インジケータからその出力系列への暗黙的な変換を行うことです。

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

asp.net - ASP.NET 4.0のViewStateMode-下位互換性?

既存のEnableViewStateを壊さないようにするために、新しいViewStateModeプロパティが導入されましたか?

ページレベルでEnableViewState=falseを設定すると、ViewStateMode設定が無視されますか?

PS:スタックオーバーフローのCWとは何ですか?

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

java - 渡されたオブジェクトのタイプに応じた複数の操作

オブジェクトが渡されるメソッドを作成し、そのメソッドが渡されたオブジェクトに応じてアクションを実行するとします。オブジェクトをどのように識別すればよいですか?

クラス名を使ってオブジェクトを識別することを考えましたが、オブジェクトのクラス名を簡単に変更でき、将来の開発時に頭痛の種になる可能性があるため、実用的ではない可能性があります。私は正しいですか?

編集:たとえば、私はオブジェクトのボールと爆弾を持っています。壁と呼ばれる別のオブジェクトがあり、壁に壁との衝突を解決する方法(たとえば、衝突するボールと爆弾の座標)がありますが、衝突するオブジェクト(つまり、ボールと爆弾)に応じてロジックが異なる場合