译 | 简单,正确,快:这是编程的正确顺序
软件中最重要的一个品质是简单。这比你要完成的任务更重要,比性能更重要。原因很简单:如果你的解决方案不简单,它就不会正确或高效率。
如果有足够的时间,您会发现所有解决足够复杂问题的软件(1)都有bug(2)都有性能问题。有缺陷的软件是不正确的。有性能问题的软件并不快。我们将面对这一事实,就像我们将面对死亡和税收一样,我们应该为此做好准备。让我们首先考虑正确性。
复杂的软件出问题。简单的软件更容易理解,也更不容易崩溃:更少的修改,更少代码行放进记忆里,边界情况更少。简单的软件也更容易测试——毕竟,运行的代码路径更少。当然,简单的软件也会崩溃,当它崩溃时,原因会更显而易见,解决方案往往也是显而易见的。
现在让我们考虑性能。最初,您可能会猜测瓶颈在哪,你也许会有自己的方法。然而,当性能测试完成时,你发现可能忽略了一些事情或高估了某种方法。唯一能够发现什么地方慢的方法是测试。哪个更容易:一个复杂的程序,还是一个简单的程序?任何看过足够大的性能测试火焰图的人都知道我在说什么。
也许复杂的软件曾经为你正确的运行过。软件需要被维护——今天的性能和正确性不会代表明天也会。工作负载将会增加,需求将会改变。软件是有生命的东西!当你在周二凌晨2点感到紧张——因为服务器出问题了,因为你的第1,831个新客户将计费系统逼迫到崩溃边缘——你准备好在一年之前的复杂代码中找出问题根源了吗?
当你面对这些问题时,你必须找出最简单的解决方法。这可能很难做到:也许问题太大了,或者在考虑为什么出问题之前,您实际上正在考虑如何解决问题。虽然这可能很难,但这是你最重要的工作。您需要将问题分解,识别其中的小问题,并大胆地缩小范围,直到找到可以用最基本解决方法解决最基本问题为止。复杂的问题放在后面,简单的解决方案的组合比复杂的解决方案的更好用。
英文原文:Simple, correct, fast: in that order
你也许感兴趣的:
- 【外评】15 年前我给自己的一系列编程建议
- 【外评】软件复杂性的三大法则(或:为什么软件工程师总是脾气暴躁)
- 【外评】我对 The Clean Coder 的看法
- 【外评】我为什么编程
- 【外评】我们应该将编程法则视作谚语
- 【译文】40 亿条 if 语句
- 现在开始,把代码里的 else 丢掉!
- 程序员提交 PR 的理想长度是多少?有人答:50 行代码!
- 别再说 “技术债” 了!
- 经历多次重写,苹果平台最强科学计算器PCalc背后的故事
你对本文的反应是: