至今令我震惊的是,在如今的今天,由专业团队开发的至今仍在使用多年的产品一直未能提供给用户有用的错误消息。在某些情况下,仅添加少量额外信息就可以节省用户数小时的麻烦。
产生错误的程序,是有原因的。它拥有一切可用的信息,可以尽一切可能地通知用户,为什么会失败。但是,提供信息以帮助用户的优先级较低。我认为这是一个巨大的失败。
一个示例来自SQL Server。当您尝试还原正在使用的数据库时,它绝对不会让您这样做。SQL Server 知道哪些进程和应用程序正在访问它。为什么它不能包含有关正在使用数据库的进程的信息?我知道并不是每个人都Applicatio_Name
在其连接字符串上传递属性,但是即使是有关所涉及机器的提示也可能会有所帮助。
另一个选择,也是SQL Server(和mySQL)是可爱的string or binary data would be truncated
错误消息和等效项。很多时候,只需仔细阅读生成的SQL语句,表格就会显示出哪一列是罪魁祸首。情况并非总是如此,如果数据库引擎发现了错误,为什么它不能节省我们的时间,而只是告诉我们那是该死的列呢?在此示例中,您可能认为检查它可能会对性能造成影响,并且这会妨碍编写者。好我买 怎么样,一旦数据库引擎知道存在错误,它就会在事后快速比较要存储的值和列的长度。然后将其显示给用户。
ASP.NET的可怕表适配器也很内gui。可以执行查询,并且可以显示一条错误消息,指出某处的约束已被违反。感谢那。是时候将我的数据模型与数据库进行比较了,因为开发人员太懒了,甚至无法提供行号或示例数据。(根据记录,我从来没有使用这种数据访问方法的选择,它只是我继承了一个项目!)。
每当我从C#或C ++代码中引发异常时,我都会将手边的一切提供给用户。已经决定扔掉它,所以我可以提供的信息越多越好。为什么我的函数抛出异常?传递了什么,期望什么?我只需要一点时间就可以在异常消息的正文中添加有意义的内容。地狱,它只是帮助我,而我发展,因为我知道我的代码抛出的事情,是有意义的。
有人可能会辩称,不应将复杂的异常消息显示给用户。虽然我不同意这一点,但是根据您的构建,通过使用不同级别的冗长程度可以轻松地解决这个问题。即使这样,ASP.NET和SQL Server的用户也不是您的典型用户,他们宁愿使用充满冗长和美味信息的内容,因为他们可以更快地查找问题。
在当今时代,为什么开发人员认为可以在出现错误时提供最少量的信息呢?
这是2011人,前来上。