2017-07-27 12 views
0

私は小さなUIツールキットの書き込み/設計しています(自己改善の目的のために、他に何?)、私はAPIの種類は以下の意味で良いだろうわからない午前:副機能を持つ異なる機能または単一の割り当て可能なプロパティ?

  1. 最低WTF?レベル。
  2. 最も柔軟です。
  3. 最も簡潔ですが、説明的です
  4. 標準C++に最適です。

重要であるいくつかの要素:

  • windowクラスは、よく窓を表し、そして、図示し隠された、最小、最大、全画面が最大化、および閉じることができます。
  • 私はproxy_propertyクラスを持っています。このクラスには、任意のgetおよびset関数を割り当てることができます。いくつかの外部API呼び出しによってフェッチまたは設定されるべき現在の値を反映します。
  • また、私は接続できる(つまり観測される)クラスを持っています。新しい/異なる値が割り当てられたときには、この新しい値がオブザーバーに通知されます。

私はどのようなウィンドウの状態を処理するための最良の方法がわからない午前:

  1. などhide()を通じてのみアクセスプライベートメンバ変数、isVisible()メンバ関数、Qtのスタイル。
  2. hide()show()などゲッターに裏打ちされ、それに応じて更新される読み取り専用プロパティ(現在はこれを解決していないため、いくつかの追加実装が必要です)。
  3. 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です。

+0

'some_window.minimize()'の中で 'some_window.state = window_state :: minimized;'を実行してください。 'some_window.minimize();'を呼び出すことは、ユーザにとってははるかに優れています。 – DimChtz

+0

Ummmは幅広く意見に影響を及ぼしています。私はあなたが提示する意思決定のための明確なアプローチが存在するとは思わない。 – luk32

答えて

0

設定可能なプロパティ(たとえば、表示可能なプロパティからvisibility)を区別するようにしてください。isVisible)、多くの場合、観測可能なプロパティは設定だけでなく、それに依存します。

対照、例えばisVisibleの場合はvisibility == trueであり、その容器はisVisibleである。

コントロールのvisibilityの設定を観察可能にする理由はなく、実際に間違いにつながる可能性があります。

この理由から、私はvisibilityのセッターとゲッターと、isVisibleの聞き取りやすいプロパティを好んでいます。

関連する問題