問題タブ [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.
asp.net - ASP.NET 4.0のViewStateMode-下位互換性?
既存のEnableViewStateを壊さないようにするために、新しいViewStateModeプロパティが導入されましたか?
ページレベルでEnableViewState=falseを設定すると、ViewStateMode設定が無視されますか?
PS:スタックオーバーフローのCWとは何ですか?
java - 渡されたオブジェクトのタイプに応じた複数の操作
オブジェクトが渡されるメソッドを作成し、そのメソッドが渡されたオブジェクトに応じてアクションを実行するとします。オブジェクトをどのように識別すればよいですか?
クラス名を使ってオブジェクトを識別することを考えましたが、オブジェクトのクラス名を簡単に変更でき、将来の開発時に頭痛の種になる可能性があるため、実用的ではない可能性があります。私は正しいですか?
編集:たとえば、私はオブジェクトのボールと爆弾を持っています。壁と呼ばれる別のオブジェクトがあり、壁に壁との衝突を解決する方法(たとえば、衝突するボールと爆弾の座標)がありますが、衝突するオブジェクト(つまり、ボールと爆弾)に応じてロジックが異なる場合
java - ハーフオープン範囲のみがサポートされている場合に包括的範囲クエリを実行する方法(ala SortedMap.subMap)
の上SortedMap.subMap
これは次のAPIですSortedMap<K,V>.subMap
:
SortedMap<K,V> subMap(K fromKey, K toKey)
fromKey
:キーの範囲が包括的からtoKey
排他的までのこのマップの部分のビューを返します。
この包括的下限、排他的上限コンボ(「ハーフオープン範囲」)は、Javaで普及しているものであり、利点はありますが、すぐにわかるように、癖もあります。
次のスニペットは、次の簡単な使用法を示していますsubMap
。
最後の行は重要です:7=Seven
の排他的な上限の性質のため、除外されsubMap
ます。ここで、実際に包括的上限が必要であると仮定すると、次のようなユーティリティメソッドを記述してみることができます。
次に、上記のスニペットを続行すると、次のようになります。
いくつかの重要な観察を行う必要があります。
- 良いニュースは、値のタイプは気にしないということですが...
subMapInclusive
Integer
動作するためのキーを想定していますto + 1
。Long
たとえばキーも使用する一般的なバージョンは使用できません(関連する質問を参照)- 言うまでもなく、代わり
Long
に比較する必要がありますLong.MAX_VALUE
- キーとしての数値プリミティブボックスタイプなどのオーバーロードは、
Byte
すべて個別に記述する必要がありますCharacter
- オーバーフローしてスローされるため
toInclusive == Integer.MAX_VALUE
、特別なチェックを行う必要があります+1
subMap
IllegalArgumentException: fromKey > toKey
- これは、一般的に言って、過度に醜く、過度に具体的な解決策です
String
キーはどうですか?または、そうでさえないかもしれないいくつかの未知のタイプComparable<?>
?
したがって、問題は次のとおりです。、、、を取り、包括的範囲のクエリを実行する一般的なメソッドを作成することは可能ですかsubMapInclusive
?SortedMap<K,V>
K fromKey, K toKey
subMap
関連する質問
の上NavigableMap
境界が包括的であるか排他的であるかを示すためにNavigableMap.subMap
2つの追加の変数をとるオーバーロードがあることに注意する必要があります。boolean
これがで利用可能になっていたらSortedMap
、上記のどれも尋ねられなかったでしょう。
したがってNavigableMap<K,V>
、包括的範囲クエリを使用するのが理想的でしたが、 (とりわけ)Collections
ユーティリティメソッドを提供しますが、と同じ贅沢を提供することはできません。SortedMap
NavigableMap
関連する質問
排他的な上限範囲クエリのみを提供するAPIの場合
- これは、排他的な上限範囲クエリの問題を浮き彫りにしますか?
- 排他的な上限が唯一の利用可能な機能である場合、過去に包括的範囲クエリはどのように実行されましたか?
java - Javaが列挙型のequals(Object)のオーバーライドを許可しないのはなぜですか?
次のスニペットに気づきました...
equals(Object x)
...メソッドはのように定義されfinal
ているため、列挙型には使用できませんEnum
。なんでそうなの?
equals(Object)
列挙型のオーバーライドが必要なユースケースは考えられません。この振る舞いの背後にある理由を知りたいだけです。
.net - F# で将来使用するための .NET API の設計に関するヒント
私は、開発者が3D でシミュレートされたサッカー リーグ用の RoboCup エージェントを作成できるようにする .NET API を設計中です。
API が C# コードでどのように機能するかにはかなり満足していますが、このプロジェクトを使用して F# スキルを向上させたいと考えています (現在は練習ではなく読書に基づいています)。
そこで、C# と F# の両方のコードで使用される API を設計する際に、どのようなことを考慮する必要があるかをお聞きしたいと思います。
いくつかのポイント。
- 私は行列演算とベクトル演算をかなり多用しています。これらは現在不変のクラス/構造体です。
- API は現在、消費者の実装 (例: ) とのいくつかのインターフェースを定義し、
IAgent
それらの実装のインスタンス (例: ) を使用してMyAgent
他の API クラス (例: ) を構築しますnew Client(myAgent)
。 - API がイベントを発生させます。
- API は、いくつかのデリゲート タイプを公開します。
- API にはいくつかの列挙型が含まれています。
API のバージョンをできるだけ早くリリースしたいと考えており、F# から操作するのが難しすぎることに気付いたとしても、後で大きな変更を加えたくありません。アドバイスをいただければ幸いです。
guava - GuavaのIterables.find()がnullを返す代わりにNoSuchElementExceptionをスローするのはなぜですか?
私はGoogleGuavaが大好きで、それをよく使用していますが、私がいつも書いている方法が1つあります。
私にとって、これはIterables
(Iterators
そのことに関しても)非常に便利な追加であるように思われるので、なぜそれが欠落しているのか疑問に思います。NoSuchElementException
また、おそらくnullを見つけることと要素を見つけないことを区別するために、をスローするメソッドを持つことのポイントを理解できますが、その状況は、使用している述語が次の場合にのみ発生します。
これは一般的なケースではないようです。
では、なぜguavaの設計者は、それが見つからない場合にnullを返すのではなく、この動作を選択したのでしょうか。
これが[Iterables.find()][1]のjavadocです。
[1]: http: //google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Iterables.html#find (java.lang.Iterable、com.google.common.base。述語)
java - int num = Integer.getInteger( "123")がNullPointerExceptionをスローするのはなぜですか?
次のコードがスローされNullPointerException
ます:
getInteger
静的なので、コンパイラはnullを呼び出していますか?それは意味がありません!
何が起こっていますか?
api - APIドキュメント/提案を作成するためのプラットフォームに依存しないツール
プラットフォームに依存しないAPIドキュメントを開発するためにどのようなツールがありますか?
私は提案されたAPIを設計中であり、構造化された簡単に編集可能な方法でドキュメントを作成したいと考えています。私が見た答えの多くは基本的に「組み込みの言語固有のドキュメントツールを使用する」でしたが、APIを実装するのではなく、「トップレベル」から設計しているため、これはあまり役に立ちません。APIドキュメント用のCMSを探しています
PBWikiまたはConfluenceを使用するためのいくつかの提案を見てきましたが、バージョン管理の側面は優れていますが、プレーンなWikiが最良のオプションであるとは確信していません。
理論的には、API呼び出し用のCCKとAPIを読み取るためのビューを使用したDrupalビルドですが、これは私が探しているものにとっては少し手間がかかります。
APIドキュメント管理システムはありますか?APIのプラットフォームに依存しないドキュメントを作成および管理するための最良のオプションは何ですか?
これに関連する質問を見てきましたが、まだ満足のいく答えはありません。
java - String.valueOf(null)がNullPointerExceptionをスローするのはなぜですか?
ドキュメントによると、メソッドは次をString.valueOf(Object obj)
返します。
引数が、の場合、;
null
に等しい文字列。"null"
それ以外の場合は、の値obj.toString()
が返されます。
しかし、私がこれをやろうとするとどうしてですか?
代わりにNPEをスローしますか?(信じられない場合は、自分で試してみてください!)
どうしてこれが起こっているのですか?ドキュメントは私に嘘をついていますか?これはJavaの主要なバグですか?
java - ユニバーサル ビルダーと複数の具体的なメソッドのどちらの設計が優れているか?
(より大きなプロジェクトの一部として) 電子メール通知サービスを作成する必要があります。
HTMLテンプレートに基づくいくつかのタイプの通知メッセージを送信するために使用されます。
次の 2 つの方法で設計できます。
最初の方法はビルダー パターンに基づいています。それは(私が思うに)普遍的であり、必要なすべてのケースを処理できます。しかし、それを使用する人にとってはあまり便利ではありません。典型的な使用法は次のようになります。
/li>2 番目の方法は、すべてのケースを明示的に実装することです。これは、使用コード (以下に示す) は可能な限り単純にすることを意味しますが、新しいケースを処理する必要があるたびに API を変更 (新しいメソッドを追加) する必要があります。
/li>
どちらの方がよいですか?なんで?(問題があれば言語はJavaです)
ありがとう!