E6.13.2result-object coupling设计
内联呈现避免了全局提示与操作对象的脱节
别名: 结果脱节 · global vs object · 回执对不上
概念解释
全局槽里的「已删除」不说删的是哪一行;对象还在列表里或已经没了,和那条消息之间要靠用户自己补主语。脱节就是这层补主语失败:消息和对象不再被当成同一件事。内联呈现把主语钉在对象身上,省掉这次补全。这一条的对手是全局回执,不是「结果要不要靠近触发点」本身——靠近是位置,脱节是身份对不上。
机制
全局回执的主语默认是「整个这里」。人正在看的却是表格里的某一行。两套主语竞争时,用户会拿全局那句去概括整张表:一条失败变成「保存坏了」,一条成功变成「都可以走了」。列表还可能在回执出现的同时重排、过滤,被操作的那一行已经不在原先坐标,全局消息更找不到挂钩。内联不靠用户做挂钩,对象自己带着结局移动——行被过滤走,失败标记跟行走;行还在,成功态就还在那一行上。脱节的代价不是少看一句表扬,而是错误地扩大或缩小了结果的范围。
边界
对象在结果到达前就被卸载(删除成功,行已经移除),内联失去挂载点,需要一个短暂的行内幽灵或相邻行的说明,否则只能退到仍点得名对象的回执。跨页动作(在对话框里确认,结果发生在背后的列表)对话框关闭后内联才可见,若用户没看到列表,仍会觉得脱节,应在关闭前把结局说完再揭示列表上的内联态。全局事态(账号只读)本来就不是对象结局,硬内联到某一行会制造反向脱节:把环境写成了这一行的失败。
怎么落地
- 对象级结果禁止只出现在全局槽;全局槽留给换页仍为真的环境。
- 删除类成功用「行消失 + 可撤销」表达结局,不要只靠顶栏一句「已删除」而行还在或已经无痕迹。
- 列表重排时把结果态写在数据上,而不是写在屏幕坐标上,让挂钩随对象走。
- 验证:同时操作不相邻的两行,只看全局槽。若无法说出各自结局,脱节已经发生;再看行上有没有各自的标记。