Rob Pike 的五条编程规则。(Rob Pike 是现代编程世界中最具影响力的工程师之一,是 Unix 团队的核心成员)
规则1. 你无法预知程序将花费时间的具体位置。性能瓶颈可能出现在意想不到的地方,因此在未确认瓶颈所在之前,不要尝试预判或使用加速技巧。
规则2. 测量。在测量之前不要为了速度进行优化,即使测量后也不要轻易优化,除非某一部分代码明显占据了绝大多数时间。
规则3. 当 n 很小时,复杂算法反而更慢,而 n 通常很小。复杂算法的常数因子很大。在未确定 n 经常会很大之前,不要使用复杂算法。(即使 n 很大,也应先遵循规则2。)
规则4. 复杂算法比简单算法更容易出错,也更难实现。应使用简单算法和简单数据结构。
规则5. 数据占主导。如果选择了合适的数据结构并进行了良好组织,算法几乎总是显而易见的。编程的核心是数据结构,而不是算法。
Pike 的规则1和规则2重述了托尼·霍尔的著名格言:“过早优化是万恶之源。”
肯·汤普逊将Pike 的规则3和规则4改述为:“有疑问时,使用暴力方法。”
规则3和规则4体现了设计哲学KISS(保持简单,愚蠢易懂)。
规则5此前由弗雷德·布鲁克斯在《人月神话》中提出。规则5常被简化为:“写傻瓜代码,使用聪明对象”。