知识卡片

刻意把底层数据模型做到极简,却坦然接受表面命令集合变得庞大

专业/工作

内容

评价一个界面复不复杂,可以拆成两个独立的维度:底层数据模型复不复杂,以及上层命令集合大不大。Word的复杂之处在于模型本身就很复杂(样式表、自动编号、页眉页脚彼此关联),用户即使只操作可见内容,也可能因为不理解底层模型而踩坑;Emacs反其道而行——缓冲区永远只是一个纯字符串,模型简单到几乎不会让人产生意外,但代价是上层暴露了近2400个命令、700个快捷键,新用户不可能全部学会。Emacs的应对策略不是砍掉命令数量,而是保证”不知道这些命令,也完全不影响使用最基本的功能”——复杂度被下放到了”可以选择性探索”的命令层,而不是每个人都必须先弄懂的模型层。这提示一个划分复杂度的通用原则:如果复杂度不可避免,尽量把它放在用户可以按需选择接触的那一层,而不是放在所有人都逃不开的那一层。

参考来源

《架构之美》第11章《GNU Emacs:滋长的特性是其优势》