問題タブ [interface-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.
xhtml - コードにエクスポートできるモックアップ ツールを知っている人はいますか?
画面をピクセルごとに (Web ページのスクリーンキャプチャを撮ったように) デザインできるツールと、画面全体を XHTML/CSS にエクスポートするオプションを提供するツールが必要です。
そのようなツールを知っている人はいますか?
注意として、私は Balsamiq のようなものを探していません. ワイヤーフレームではなく、非常に詳細な UI を作成したい。
java - op が失敗した場合に null を返してキャストしようとする命名パターンの提案
このパターンは多くの場所で見てきましたが、名前が付けられているのを見たことがありません。
さまざまな人がさまざまな命名パターンを使用しているように見えるため、それを実装するメソッドに名前を付ける方法についての提案を求めています。
申し訳ありませんが、例としてライブラリを思い出すことはできませんが、回答の一部としてライブラリを使用する場合は、名前を付けてください。
追加
@LouisWasserman
まず、ctor パッケージを非公開にすることで、Produce のサブタイプの数が制限されます。2 つの isXXX メソッドを含めることで、サブクラスが 2 つしかないという事実を示しています。これは、instanceof チェックを行うよりも優れています。たぶん私だけかもしれませんが、このアプローチは、他のコードや上記にキャストがないことも意味します。これは良いことですよね?
また、Veg を Fruit にキャストしようとしたときに操作 isFruit() が失敗したことを示すために null を返すのと同じように、検索またはクエリが失敗したときにメソッドから空のリストを返していませんか?
私が信じているEclipse JDTのクローンであるJTypeのGWTで簡単な例を見つけました。とにかく、その起源は問題ではありませんが、ここには、私が説明していることを正確に行う2つの非常によく知られている製品があります...
null をキャストまたは返すことを試みる isXXX は他にもたくさんあります。以下にいくつか貼り付けます。
html - 行間の仕切りにテキストを追加するにはどうすればよいですか?
例 (テキストとして「OR」を使用):
アイデアは、列を折りたたむと、つまりモバイル サイズの画面で表示すると、 と の間に表示されるということsubmit
ですClick me
。
行間の仕切りにテキストを追加するにはどうすればよいですか?
c# - 引数がC#で複数のインターフェイスを実装する必要があることをどのように表現できますか
この質問と同様に、複数のインターフェイスを実装するためにメソッド引数を要求するにはどうすればよいですか? メソッド引数にいくつかのインターフェイスを実装したい。
インターフェイスは任意の方法で組み合わせることができ、有効な組み合わせごとにインターフェイスを作成したくありません。
ファイルについて考えてみてください。かもね:
- 読み取り可能=>
IReadable
- 書き込み可能=>
IWriteable
- アーカイブ=>
IArchive
- 自動生成=>
IGenerated
..。
引数が書き込み可能で生成されたアーカイブである必要があることを表現したい場合は、IWritableGeneratedArchive
組み合わせが多すぎて、変更できない既存のクラスで使用したいので、生成したくありません。
擬似コード:
c++ - CおよびC++でパラレルインターフェイスを使用してライブラリを設計する方法
私の現在のプロジェクトは、CとC++のインターフェイスを同時に持つことを目的とした中規模のライブラリです。これは、CおよびC ++関数からアクセスできるようにしたい単一のデータ型を中心にしています。これは、いずれかの言語で関数を記述してライブラリを拡張するようにサードパーティに推奨したいためです。
私はC/C ++ミキシングの基本について知っており(たとえばhttp://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.htmlと比較してください)、次の解決策を考え出しました。
私の基本的な設計は、すべてのデータを公開したCで構造体を作成し(これは私のCプログラマーが期待するものです)、メンバーアクセスを隠すクラスを派生させ、C++プログラマーが構造体に安全にアクセスできるようにすることを中心としています。問題は派生にあります。C++で名前空間を使用し、Cインターフェイスを非表示にしたいのです。もちろん、C構造体自体を非表示にすることはできません(PIMPLイディオムに頼らなければ)が、それは私にとっては問題ありません。
次のサンプルコードは、CおよびC++の「クライアント」プログラムで明らかなエラーなしにコンパイルおよび実行されます。しかし、私はこの解決策が有効であるかどうか、またはより良い解決策があるかどうか疑問に思っています。
コード例:
c++ - ポインター渡しの代わりに参照渡しを使用する場合のバイナリ互換性
この質問は、次の質問に対するフォローアップの質問として意図されています: C++ におけるポインター変数と参照変数の違いは何ですか?
回答とstackoverflowで見つけたいくつかのさらなる議論を読んだことで、コンパイラは参照渡しをポインタ渡しと同じように扱うべきであり、参照は構文糖に過ぎないことがわかりました。バイナリ互換性を考慮して違いがあるかどうか、まだ把握できていないことが 1 つあります。
私たちの (マルチプラットフォーム) フレームワークでは、リリース ビルドとデバッグ ビルドの間 (およびフレームワークの異なるリリース間) でバイナリ互換性を保つ必要があります。特に、デバッグ モードでビルドするバイナリは、リリース ビルドで使用できる必要があり、その逆も同様です。これを実現するために、インターフェイスでは純粋な抽象クラスと POD のみを使用します。
次のコードを検討してください。
ISerializer
IException
また、純粋な抽象クラスでもあります。ISerializer
既存のオブジェクトを指す必要があるため、常に NULL ポインター チェックを実行する必要があります。IException
ポインターが指すアドレスを変更する必要がある、ある種の例外処理を実装します。このため、ポインタからポインタへのポインタを使用しますが、NULL ポインタもチェックする必要があります。
コードをより明確にし、不要な実行時チェックを取り除くために、参照渡しを使用してこのコードを書き直します。
これで問題なく動作するようです。しかし、これが依然としてバイナリ互換性の要件を満たしているかどうかという疑問が残ります。
更新: 物事を明確にするために:この質問は、コードのポインター渡しバージョンと参照渡しバージョンの間のバイナリ互換性に関するものではありません。これがバイナリ互換でないことはわかっています。実際、バイナリの互換性を気にせずに、ポインター渡しではなく参照渡しを使用することを検討している API を再設計する機会があります (新しいメジャー リリース)。問題は、コードの参照渡しバージョンのみを使用する場合のバイナリ互換性についてです。
web-services - RESTful API のベスト プラクティス
私は Android 開発者であり、RESTful API 開発の知識も持っています。現在、Dot Net Web API を使用して API を構築しています。すべてがうまく機能していますが、私はまだデザインに関心があります。
私にとって今の中心的な関心事は、「応答コード」と「応答メッセージ」以外に追加できる他の有用な要素のような、応答のメタデータが正確にどうあるべきかということです。
私にとっての 2 番目の懸念は、要求が非同期であるか、クエリであるか、またはその両方であるかということです。
そして最後の懸念事項は、JWT や基本認証などのステートフル通信をステートレスにするためにどのような手法を使用する必要があるかということです。
java - API に返されるオブジェクトの実装固有のメソッドへのアクセス
問題を抽象的に定式化することから始めましょう。2 つのパブリック インターフェイス タイプがあります。それらの 1 つには、他のインターフェイス タイプのインスタンスを少なくとも 2 つ受け取るメソッドが含まれています。メソッドの実装は、渡されたオブジェクトの実装に依存します。
2 つのインターフェイスで構成される次のパブリック API について考えてみましょう。
次に、その API を次のように実装します。
メソッド内のラップされたオブジェクトにアクセスする必要がありますが、メソッドは API の一部ではないconnect
ため、これは不可能です。getWrapped
実装の詳細です。
connect
問題は、実装の詳細を API に漏らさずにメソッドを実装するにはどうすればよいかということです。
これが私がこれまでに試したことです:
connect
メソッドをNode
インターフェースに入れ、 を呼び出しますparent.connect(child)
。これにより、親のラップされたオブジェクトにアクセスできるようになりますが、子のラップされたオブジェクトはまだ利用できません。渡された
Node
のが型であると仮定してNodeImpl
、ダウンキャストを使用してください。これは私には間違っているようです。他のNode
実装があるかもしれません。ラップされたオブジェクトをノードに配置しないでください。をオブジェクトに
TreeImpl
マップするマップを使用してください。Node
Wrapped
これは基本的に上記と同じです。インスタンスが関連付けられたマッピングを持たないメソッドにNode
渡されるとすぐに壊れます。connect
Node
インターフェイスにはメソッドが含まれる場合があることに注意してください。ただし、これはこの質問にとって重要ではありません。
また、インターフェースの宣言と実装の両方を管理していることに注意してください。
これを解決する別の試みは、メソッドをインターフェイスのメソッドに変換し、インターフェイスを汎用にすることconnect
です。addChild
Node
Node
Node
createNode
パブリック API の一部です。NodeImpl
そしてWrapped
隠す必要があります。run
クライアントコードです。ご覧のとおり、NodeImpl
はクライアントに表示される必要があるため、これはまだ漏れのある抽象化です。