我設計/寫一個小UI工具包(用於自我改善的目的,還有什麼?),而且我不確定什麼樣的API會在下面的感覺會更好:具有副作用的不同功能或單個可指定屬性?
- 最低跆拳道?水平。
- 最靈活。
- 最簡潔但尚未描述的
- 最適合標準C++。
是重要的某些元素:
- 的
window
類表示以及,窗口,並且可以顯示,隱藏,最小化,最大化,全屏最大化,並且關閉。 - 我有一個
proxy_property
類,它可以被賦予任意的get和set函數,例如,反映應該通過外部API調用獲取或設置的當前值。 - 我也有一個
property
類可以連接到(即觀察),並且當它被分配一個新的/不同的值時,會將這個新值告訴給它的觀察者。
我不確定什麼是最好的方式來處理窗口狀態:
- 私有成員變量,只有通過訪問
hide()
,isVisible()
等成員函數,Qt的風格。 - 只讀屬性(將需要一些額外的實現,因爲我現在還沒有這個工作了),它支持通過
hide()
,show()
等getter和相應的更新。 - A
proxy_property
可以被分配一個新的狀態,當分配一個新的值時導致對hide()
,show()
等或其組合的呼叫。
乍一看,我更喜歡3號的理由3,但鑑於其他條件,我不確定這個設計將如何保持。我只想說我沒有在任何地方看到過我的第3號數字,我害怕過分依賴我的proxy_property
概念,因爲它可能會產生比它更大的開銷(另一方面,這是我們正在談論的UI代碼約,所以架空將在那裏)。
爲清楚:
enum class window_state { windowed, hidden, minimized, maximized, fullscreen_maximized };
class window
{
public:
proxy_property<window_state> state;
//....
};
所以,一個可以做
some_window.state = window_state::minimized;
真正做一些更傳統上由例如完成
some_window.minimize();
當然,最終結果在功能上是相同的。這只是完全不同的API。
只要在some_window.minimize()內執行'some_window.state = window_state :: minimized;'''''''。調用'some_window.minimize();'對用戶來說更好。 – DimChtz
嗯,是不是有點過分寬泛和意見的影響?我不認爲您存在的設計決策存在明確的方法。 – luk32