你将如何设计一个不可能的错误?甚至可能吗?
举个简单的例子:Bob 需要在他流行的互联网博客中添加评论功能。它每月吸引数百万访问者,并且已经有数千个帖子。如果他雇用你,你将如何实现该功能?
您可能会在页面末尾添加一个负责呈现帖子的表单,对吧?它几乎是常识。(为了简单起见忘记安全性)
但是,该解决方案对 Bob 博客的工作方式做出了太多假设。
假设制作 Bob 博客的人讨厌 Bob。他想创建一个系统,如果不从头开始完全重写,就无法实现新功能。
如果你是讨厌 Bob 的人,你会如何创建这样的系统?您不限于特定的语言、框架、操作系统、服务器软件、架构或任何东西。您需要做的就是向连接到您的服务器的客户端提供工作博客页面。
还假设鲍勃会做任何你告诉他的事情。如果他必须通过信鸽将他的新手写博客文章发送到离岸处理中心,那么他会这样做。
在有人问之前,不,我不是在问这个问题,因为我想搞砸客户。我认为这就像一个练习。我们习惯于设计不应该破坏的代码,但是我们将如何处理不应该工作的工程代码呢?就像错误是不可避免的一样,解决方案是否同样不可避免?创建这样的倒排代码和编写常规代码一样难吗?如果我们可以创建无法修复的代码,是否意味着我们可以创建无法破坏的代码?