身在其坑,不知其深:GUI

原创
2021/01/05 08:13
阅读数 9.6K

GUI是个大坑,Linux之父也得绕道而行,理由是:他想让自己的活的久一点!
GUI也是性价比最高的软件作品,君不见各大操作系统,即使功能不做任何调整,也会隔三差五的更新UI;所谓的操作系统更新,已经被冠以界面更新了,虽然被很多程序员不齿,但其宣传效果和用户期待度都非常之高。功能可以千篇一律,但是界面风格必须不拘一格,对吧?

所以,无论你是老板,技术总监,还是普通程序员,GUI永远是你需要着重考虑的事情!

可能有的同学说,这好办呀,我用Qt,Android,Windows,以及JavaScript VUE框架就好了呀。首先我很赞成你使用这些大型知名框架,但如果我告诉你很多大厂和知名软件都很少用它们,你信吗?

你可能会说:不会吧,你看这些UI控件多漂亮呀,你看这按钮,你看这LIST,你看这字体。。。请回答一个问题:你见过单纯眼睛,或者鼻子好看的美女吗?你见过五官都很一般,但搭配起来很标志的面孔吗?

当你试图通过大型GUI库解决你的UI问题,其实你已经入坑了。处于某种默契,市面上没人任何书籍对这个问题作说明,群主也只敢在这方寸之间和大家讨论一下自己不成熟的看法。

GUI工作如此繁琐的原因其实也很简单,因为GUI根本就不是一个软件工程师干的活~~~GUI是一个艺术工作,一般都有艺术类专业人才完成;这里大家不要抬扛哈,我相信一定有人程序写的好,UI设计也很棒。但这样人非常少,我们不得不承认审美是技术活,我们大部分人都干不了这个活。抖音,快手,出点审丑的视频非常高产,但出点审美的东西,那是相当的困难。

GUI作为一种整体艺术,非常注重搭配,毁掉一个UI的方法实在太多了,有时是一个字体毁全局,有时几个像素就够了。即使是一些十分常规的控件,在不同的整体效果下,改改配色,处理几个像素的视差,这都是非常必要的。一招吃三年,这句话在艺术圈是不存在的。齐白石画了很多虾的作品,请告诉我那副作品是一样的?哪副画,有复用的可能?一位临摹梵高画作的高级画匠,看到梵高真迹的时候,才发现临摹与真迹居然还有这么大的差距~~~

综上所述,相信你应该知道了GUI工作繁琐的原因了,因为GUI是无限变化的。很多大厂已经有了很多控件库,但真正使用的时候,也用不了几个,最终的结果就是:控件库越来越大,使用率越来越低。

同理,无论Qt,WPF,.NET有多少单独看起来美妙绝伦的控件,但你能直接用的,几乎没有。所以,GUI框架给你提供的默认控件其实给你的帮助不大,一旦有新产品,重新设计控件是必需的,所以,GuiLite的设计理念就是:与其给你提供一些用不上的控件,不如把控件制定规则尽量简单化,让开发者更容易变换出各种样式的控件,从而满足艺术家,GUI设计师天马行空的想象力。

当然,大型GUI框架也明白:原始控件的复用率很低这个事实,为了提高对开发者的粘性,他们会把GUI框架绑定很多看上去很美的语法糖,甚至对操作系统的标准接口重新封装,请问,谁还敢说Qt是个纯粹的GUI框架?相反它几乎无所不包,甚至IDE。

可是繁华落去,无论如何掩盖,最后要解决的GUI问题还是没有解决,甚至发现自己还被一系列特定的开发环境死死的粘住。这真的是非常好的商业模式,这是天才的设计。

GUI是艺术和程序员的结合体,需要同时从两个角度出发,才能寻找到合理、实用的解决方案。程序员需要了解艺术,艺术家需要了解程序。程序员喜欢的复用,往往是对艺术家想象力的最大限制;当你给艺术家提供一大堆控件库、和控件自动布局的时候,艺术家可能更喜欢手上的铅笔和白纸。

请大家千万不要误会,这里不是说大型GUI无用(GuiLite跟它们也是兼容的),相反,在很多时候,只要你对细节不要太较真,它们往往是第一选择。只是今天的技术大有往定制化方向发展的趋势。就好比:很多时候intel的通用CPU也可以作数字处理,图形处理;但比起DSP,GPU这种专门芯片而言,效能就不占优势;甚至进行特殊处理的苹果M1芯片,虽然还是一款通用CPU,但其效能上直接碾压Intel。或者,再打一个比方:集成电路软件早就具备自动布线功能,但在真正产品化的过程中,这一招绝对是限制使用的,很多时候需要布线工程师根据自己的经验,对走线精心布局,不断调优。

Qt的少数高阶开发者也能对控件细节进行随心所欲的深度定制,而且效率也不错;而GuiLite的开发者除了在细节上全面把控外,还会对核心进行改造,并衍生出了GuiLite python版本,GuiLite C语言版本。如果GUI只是你的附属品,我想常规GUI框架就足够了;如果需要对GUI进行长期打磨,持续更新的话,可能GuiLite是一个选择。二者的出发点不一样,可能谁都不会,也不愿意变成对方。

GuiLite复用的是内部机制,跟外部的UI元素无关,从demo wall,大家可以看到所有的实例都风格迥异,从外形看来,毫不搭嘎,但他们都是100行就能实现的效果。

最后,当你在判断某个GUI效果,用哪个框架可以实现的时候,你可能已经快入坑。为了避免更大的陷阱,你需要从艺术家的视角思考一下你的问题,我相信你需要的不是一个固定的外形,你可能需要的是一个:铅笔般的简单核心和无形的外形。

展开阅读全文
加载中
点击加入讨论🔥(4) 发布并加入讨论🔥
打赏
4 评论
2 收藏
3
分享
返回顶部
顶部