用动作替代命令语法
别名: 动作替代语法 · 拖拽操作 · 图形命令 · 手势语法
概念解释
直接操纵让用户在可见对象上执行拖、放、点选、缩放、旋转、连线等动作,而不是先学习对象名、参数顺序和命令语法。意图通过"对哪个对象做什么"直接表达,系统负责翻译成内部操作。这一条讲的是直接操纵和命令行这类交互方式之间最核心的分工差异:命令语法要求用户先把意图翻译成一套符号系统再交给系统去执行,动作则试图让这次翻译在物理层面直接完成,不需要额外的符号中转。
机制
命令语法之所以门槛更高,是因为它要求用户预先在脑子里记住一整套抽象规则:动词该用哪个词、宾语和参数按什么顺序排列、出错之后返回的错误信息该怎么解读,这些规则和用户实际想做的事情之间隔着一层符号翻译,翻译本身就是额外的认知负担。动作把这层翻译的一部分外化到了物理空间里:想移动一个对象,就把它拖到目标位置,参数(移动到哪里)直接体现为手指或光标停下的那个位置,不需要另外输入坐标;想连接两个对象,就从一个拖一条线到另一个,关系本身用空间上的连线表达,不需要另外声明"对象 A 连接对象 B"这句话。这种外化除了降低表达门槛之外,还带来一个命令语法很难做到的好处:动作发生的过程本身可以被实时预览,用户在真正松手提交之前,就能看到"如果这样做会怎样",从而提前发现自己想错了地方。但需要澄清的是,动作本身也不是没有语法——长按、双击、从边缘拖入、组合键触发,这些同样是一套需要被学习和记住的约定,只是这套约定的载体从抽象符号换成了具体的手势和位置,而且正因为承载的是空间关系而不是符号,这套语法天生就没有办法把所有需要表达的参数都塞进去。
边界
用动作替代命令语法不等于动作天然就比命令更"自然"或者更容易理解。复杂的参数设置、多个条件的组合判断、跨越多个对象的关系描述,以及需要统一应用到一批对象上的规则,如果硬要塞进纯手势里去表达,反而会变得晦涩难懂——手势能清楚表达"这个"和"那个"之间的关系,但很难清楚表达"所有满足某个条件的对象"这类抽象集合,这个边界会在下一条"直接操纵难以表达抽象与批量操作"里进一步展开。无障碍输入场景、只能单手操作的场景,以及大屏远程操作的场景,也各自有让手势变得困难甚至不可行的具体限制,这些场景下依然需要保留菜单、命令面板或者语音输入这类替代路径,不能假设所有用户都能顺畅完成设计者预想的那套手势序列。
怎么落地
- 为每一个核心手势提供功能等价的按钮、菜单项或者可以直接输入的表单,确保通过这两种不同路径达成的结果完全一致,而不是让手势成为唯一入口。
- 用清楚的视觉意符标出当前对象能不能被拖拽、能不能被缩放、能不能连线,以及哪些区域是不允许放置的,让用户在动手之前就能大致判断这个手势能不能用。
- 涉及复杂设置的部分,不要硬塞进手势本身去表达,而是在动作完成后打开一个上下文面板或者属性页,让用户在那里补充需要的具体参数。
- 验证办法:找完全没有接受过提示的新用户,观察他们能不能仅凭界面上的视觉线索推断出正确的手势该怎么做;同时单独检查键盘导航和屏幕阅读器路径是否提供了和手势等效的操作方式,而不只是给视力和手部操作都没有障碍的用户设计了这套动作语法。