图形界面开发中的工匠精神
这几天继续用QtCreator开发GUI。在继续享受图形化编程带来的便利的同时,我也意识到一个人性化的程序背后必然需要强大的人机交互逻辑作为支撑,而逻辑的简洁并不意味着代码的简洁。曾经我认为:如今Windows下越做越大的软件安装包中充斥着图形和视频素材,而这些素材本可以通过代码来绘制,只是大多数的开发者不喜欢hack而已。然而随着程序要处理的交互逻辑增多,代码量增长这一因素在安装包的体积膨胀中也占有相当重要的分量。即便假定自由软件的算法(空间)效率都很高,我们也很难说2个G的Linux安装镜像能够提供与4个G的Windows安装镜像一样的交互逻辑,更何况前者所含的图像资源比例更大。所以,在大众的数字信息交换尺度已跨入“G”时代的今天,如果还像上个世纪那样为了节约空间而牺牲软件的用户体验,就真的得不偿失了。
扯得有些远。这里我想说的是:为了能让图形化界面拥有更人性化的人机交互逻辑,一些看似“冗余”的代码和频繁的测试是不可缺少的。先列举几个图形界面程序设计中常见的、让用户反感的漏洞:
1、文档编辑功能:用户选择关闭文档,在询问用户是否保存更改时,用户选择了“是”,但是在后续操作过程中由于某些原因未能完成保存,此时在没有询问用户的情况下就直接关闭了原文档,导致所作更改丢失;
2、尺寸自适应:既没有固定窗体大小,也没有在用户改变窗体宽高时及时调整内部控件的位置和大小,导致部分控件被掩盖、布局失调。事实上,为了适应多种显示分辨率和长宽比,固定窗口大小也不是正确的做法。
3、列表编辑:用户选中列表中的一项或多项,然后进行插入、修改或删除操作。操作完成之后,列表中的原本被选定的项目不再被选中(即失去焦点),甚至滚动条也没有正确定位,导致用户需要重新寻找先前编辑的位置。这一问题也体现在文件或目录的查找中,即在对话框中找到所需文件或目录的位置后,再次进入该对话框时又回到了初始路径,用户被迫再次花时间定位该文件。
以上这些问题,有些是作者因为开发经验不足而没有考虑到,但更多的则在于一个字——“懒”。实际上,要做一个好的软件开发者,首先必须要做一个好的软件使用者,而后者就要求开发者对软件的每个交互细节了如指掌,不能因为某个功能看似不重要、不常用就可以略过测试、放任漏洞存在。同时,软件的逻辑都是逐渐积累而成的,但须记住软件的规模也是逐渐积累而成的——这里的规模当指代码规模,而非功能规模。这就要求开发者注意控制软件特性的增长速度,在开发初期不要一味求“多”而不求“精”,否则就会“外厉内荏”,逐渐丧失用户群;或者“尾大不掉”,到后期连自己都无心维护,只得放弃。归根到底,需要的就是我们常说的“工匠精神”:首先要端正态度,然后要用心雕琢。这一点虽然对其他类型的程序也适用,但对图形界面程序尤为重要,因为后者不仅是开发者的艺术,更是与人与人间交流的艺术。
转载本站文章请注明,转载自:WTZ的小博[ http://wiblog.net/]
本作品采用知识共享署名 4.0 国际许可协议进行许可。