程序口才被认为有害

2021-01-16 03:58:24

⟵返回让我们比较一些错误消息-特别是尝试在Windows PowerShell和GNUBash中执行不存在的命令时发生的错误消息。

PS C:\> lorem --ipsum dolor -sit ametlorem:术语' lorem'不能识别为cmdlet,函数,脚本文件或可运行程序的名称。检查名称的拼写,或者是否包含路径,请验证路径是否正确并重试。在第1行char:1 + lorem --ipsum dolor -sit amet + ~~~~~ + CategoryInfo:ObjectNotFound:(lorem:String)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundExceptionPS C:\>出口

您会注意到的第一件事是PowerShell的输出非常冗长。您遇到了一个错误,一条非常有用的消息,提示您检查名称的拼写,然后重试,还有堆栈跟踪。同时,bash只是告诉您未找到命令。

埃里克·雷蒙德(Eric Raymond)在其出色的《 UNIX编程的艺术》一书中解释说,一个好的UNIX程序应该输出最少的内容,这就是他所说的“沉默规则”:

Unix最古老,最持久的设计规则之一是,当一个程序没有什么有趣或令人惊讶的说法时,它应该关闭。行为举止良好的Unix程序毫不费力地完成了工作,而又大惊小怪。沉默是金。

这种沉默是金色的规则最初被取消,因为Unix早于视频显示。在1969年的慢速打印终端上,每行不必要的输出都会严重浪费用户的时间。那种约束已经消失了,但是简洁的绝佳理由仍然存在。 (雷蒙德,43岁)

...重要的信息不应与有关内部程序行为的详细信息混为一谈。如果所有显示的信息都很重要,则很容易找到重要信息。

精心设计的程序将用户的注意力和专注视为以前的有限资源,只有在必要时才可以要求使用。(Raymond,44)

我想继续引用阿诺德的名言。您不仅不应该包括不重要的信息,而且还应该以最可能的形式输出重要的信息。

当用户使用特定的应用程序时,他们通常会尝试完成某些事情。他们可能正在尝试检查电子邮件,启动IMclient或启动浏览器。阅读内容需要花费时间,因此会降低用户的速度。因此,用户将尽其所能进行最少的阅读。

因此,简短错误消息比详细错误更可能被正确读取。

"但是等等! PowerShell消息更加用户友好,因为它会提醒用户检查其拼写! Pffft。足以使用PowerShell的任何聪明人(因为缺少更好的单词!)都将知道他们应该仔细检查其拼写,而不会出现错误消息告诉他们这样做。

甚至在"正常"应用程序-大多数用户不太了解他们的拼写可能是罪魁祸首-一条错误消息,即过于冗长仍然是有问题的,因为许多(即使不是大多数)非技术性用户也不会麻烦阅读!

而且,如果您仅必须包含帮助/提示消息,则应以不会分散用户实际错误的方式进行。

您现在无法登录设备。转到account.live.com来解决此问题,或尝试在此设备上使用的最后一个密码。

这是用户尝试从TTY登录时在Linux上显示的错误消息。

但是:" Windows帐户"实际上是一个Microsoft帐户,并且密码是相同的。这意味着,如果用户在另一台设备上更改其Microsoft帐户密码,然后尝试在尚未连接到Internet的另一台设备上登录并收到新密码,则她将不得不使用该特定设备上使用的最后一个密码。

但是,大多数用户在这种情况下可能不会意识到这一点,因此可以在错误消息中这样说。诀窍是以某种方式包括它,以免错误消息显得太长:

请注意,主要错误("密码不正确")以粗体显示,而下面两行的提示用斜体显示。我没有在文本中添加提示,因为这会给初学者带来一种印象,那就是她不必注意的某种法律/技术信息。

查看当您的Google搜索未打开任何内容时显示的错误消息:

一方面,不需要用粗体重复整个搜索查询。用户已经知道他们要搜索的内容。

请注意,我是如何压缩主要错误消息和第一个建议,然后将“建议:”替换为“提示:”。

$ ssh tilde.zone主机' tilde.zone(51.79.32.49)'的真实性无法建立ECDSA密钥指纹为SHA256:0EmsPM79b0dq7McKYu0fsEiDoiv4JhamrGTOJ3IbShc。确定要继续连接(是/否)吗? yes警告:永久新增' tilde.zone,51.79.32.49' (ECDSA)到已知主机的列表。kiedtl@ tilde.zone的密码:权限被拒绝,请重试。kiedtl@ tilde.zone的密码:^ C $

$ ssh tilde.zone' tilde.zone(51.79.32.49)' ECDSA密钥指纹:SHA256:0EmsPM79b0dq7McKYu0fsEiDoiv4JhamrGTOJ3IbShc是否继续? (是/否)是警告:将主机添加到已知主机列表中。kiedtl@ tilde.zone的密码:权限被拒绝,请重试。kiedtl@ tilde.zone的密码:^ C $

如您所见,我压缩了第一行,继续提示,并警告了一些;我也将第二行更改为不是句子,从而消除了整个两个字母的单词;)

警告已更改为不再重复先前已列出的主机和IP地址。完全不需要的已从密码错误中删除。

(并且,如果您想知道su为何不说密码错误,那可能是由于su无法知道密码是否真的是错误的密码或用户名,或者是其他东西。)

并且,如果您确实必须包括某种提示或建议,请在视觉上将其与错误消息分开。