软件中最重要的一个品质是简单。这比你要完成的任务更重要,比性能更重要。原因很简单:如果你的解决方案不简单,它就不会正确或高效率。

如果有足够的时间,您会发现所有解决足够复杂问题的软件(1)都有bug(2)都有性能问题。有缺陷的软件是不正确的。有性能问题的软件并不快。我们将面对这一事实,就像我们将面对死亡和税收一样,我们应该为此做好准备。让我们首先考虑正确性。

复杂的软件出问题。简单的软件更容易理解,也更不容易崩溃:更少的修改,更少代码行放进记忆里,边界情况更少。简单的软件也更容易测试——毕竟,运行的代码路径更少。当然,简单的软件也会崩溃,当它崩溃时,原因会更显而易见,解决方案往往也是显而易见的。

现在让我们考虑性能。最初,您可能会猜测瓶颈在哪,你也许会有自己的方法。然而,当性能测试完成时,你发现可能忽略了一些事情或高估了某种方法。唯一能够发现什么地方慢的方法是测试。哪个更容易:一个复杂的程序,还是一个简单的程序?任何看过足够大的性能测试火焰图的人都知道我在说什么。

也许复杂的软件曾经为你正确的运行过。软件需要被维护——今天的性能和正确性不会代表明天也会。工作负载将会增加,需求将会改变。软件是有生命的东西!当你在周二凌晨2点感到紧张——因为服务器出问题了,因为你的第1,831个新客户将计费系统逼迫到崩溃边缘——你准备好在一年之前的复杂代码中找出问题根源了吗?

当你面对这些问题时,你必须找出最简单的解决方法。这可能很难做到:也许问题太大了,或者在考虑为什么出问题之前,您实际上正在考虑如何解决问题。虽然这可能很难,但这是你最重要的工作。您需要将问题分解,识别其中的小问题,并大胆地缩小范围,直到找到可以用最基本解决方法解决最基本问题为止。复杂的问题放在后面,简单的解决方案的组合比复杂的解决方案的更好用。

英文原文:Simple, correct, fast: in that order

余下全文(1/3)
分享这篇文章:

请关注我们:

发表评论

电子邮件地址不会被公开。 必填项已用*标注