Rob Pike 的 5 条编程规则


Rob Pike 的 5 条编程规则强调简单性和衡量性,而不是过早的优化:

  • 规则 1:你无法判断程序会在哪里耗费时间。瓶颈出现在令人吃惊的地方,因此在证明瓶颈所在之前,不要试图猜测并尝试快速破解。
  • 规则 2:测量。在测量之前不要调整性能,即便如此,除非代码的某个部分压倒了其他部分,否则也不要调整性能。
  • 规则 3:当 n 较小时,花哨的算法速度较慢,而 n 通常较小。花哨的算法有很大的常数。除非你知道 n 会经常变大,否则不要使用花哨的算法。(即使 n 变大,也要先使用规则 2)。
  • 规则 4:花哨的算法比简单的算法更容易出错,也更难实现。使用简单的算法和简单的数据结构。
  • 规则 5:数据至上。如果你选择了正确的数据结构,并把事情组织得井井有条,算法几乎总是不言自明的。数据结构而非算法是编程的核心。

Pike 的规则 1 和 2 重申了 Tony Hoare 的著名格言“过早优化是万恶之源”。

肯·汤普森 (Ken Thompson) 将派克的规则 3 和 4 重新表述为“如有疑问,请使用暴力”。

规则 3 和 4 是 KISS 设计理念的实例。

规则 5 先前由弗雷德·布鲁克斯 (Fred Brooks) 在《人月神话》中阐述过。规则 5 通常被缩写为“编写使用智能对象的愚蠢代码”。

评论:

  • 人们也忘记了这句话来自 20 世纪 70 年代,当时编程非常不同。
  • 特定函数可以返回错误和其他值,而不是假设失败。
  • LeetCode 面试过于关注算法而不是数据结构,而数据结构并不总是最好的。
  • 解决问题的有效方法还是应该被理解,知道优化在哪里重要。