私は小さなUIツールキットの書き込み/設計しています(自己改善の目的のために、他に何?)、私はAPIの種類は以下の意味で良いだろうわからない午前:副機能を持つ異なる機能または単一の割り当て可能なプロパティ?
- 最低WTF?レベル。
- 最も柔軟です。
- 最も簡潔ですが、説明的です
- 標準C++に最適です。
重要であるいくつかの要素:
window
クラスは、よく窓を表し、そして、図示し隠された、最小、最大、全画面が最大化、および閉じることができます。- 私は
proxy_property
クラスを持っています。このクラスには、任意のgetおよびset関数を割り当てることができます。いくつかの外部API呼び出しによってフェッチまたは設定されるべき現在の値を反映します。 - また、私は接続できる(つまり観測される)クラスを持っています。新しい/異なる値が割り当てられたときには、この新しい値がオブザーバーに通知されます。
私はどのようなウィンドウの状態を処理するための最良の方法がわからない午前:
- など
hide()
を通じてのみアクセスプライベートメンバ変数、isVisible()
メンバ関数、Qtのスタイル。 hide()
、show()
などゲッターに裏打ちされ、それに応じて更新される読み取り専用プロパティ(現在はこれを解決していないため、いくつかの追加実装が必要です)。hide()
,show()
など、または新しい値が割り当てられている場合は、これらの組み合わせを呼び出すことができる新しい状態を割り当てることができるproxy_property
です。
一見して、私は3番の理由で3番が好きですが、他の条件に照らして、このデザインがどれほどうまくいくかわかりません。十分なオーバーヘッドが発生する可能性があるので、私の番号3がどこにでも使われているのを見ておらず、私のproxy_property
コンセプトにあまりにも多くを傾けることを恐れています(これは私たちが話しているUIコードですそれにもかかわらず、オーバーヘッドがそこにあります)。明確にするために
:
enum class window_state { windowed, hidden, minimized, maximized, fullscreen_maximized };
class window
{
public:
proxy_property<window_state> state;
//....
};
だから、1は実際に何かをより伝統的に、例えばによって行われないために
some_window.state = window_state::minimized;
を行うことができます
some_window.minimize();
最終結果は、もちろん機能的には同じです。まったく異なるAPIです。
'some_window.minimize()'の中で 'some_window.state = window_state :: minimized;'を実行してください。 'some_window.minimize();'を呼び出すことは、ユーザにとってははるかに優れています。 – DimChtz
Ummmは幅広く意見に影響を及ぼしています。私はあなたが提示する意思決定のための明確なアプローチが存在するとは思わない。 – luk32