本文翻译自 Rob Pike’s 5 Rules of Programming。
Rob Pike 的编程五原则
原则 1. 你无法预知程序会把时间花在哪里。瓶颈出现在令人惊讶的地方,所以不要试图猜测并过早地加入性能优化,直到你证明那里确实是瓶颈所在。
原则 2. 测量。在测量之前不要为了速度而优化,即使测量之后,也不要优化,除非某部分代码的执行时间远远超过其他部分。
原则 3. 当 n 较小时,复杂的算法效率低下,而 n 通常都很小。复杂算法有很大的常数开销。在你确定 n 经常很大之前,不要使用复杂的算法。(即使 n 确实变得很大,也要先应用原则 2。)
原则 4. 复杂算法比简单算法更容易出错,而且更难实现。使用简单的算法以及简单的数据结构。
原则 5. 数据为主导。如果你选择了正确的数据结构并且组织得当,算法几乎总是显而易见的。数据结构,而非算法,才是编程的核心。
相关说明
Pike 的原则 1 和原则 2 重申了 Tony Hoare 的名言:
“过早优化是万恶之源。”
Ken Thompson 将 Pike 的原则 3 和原则 4 重新表述为:
“如有疑问,使用暴力方法。”
原则 3 和原则 4 是 KISS(Keep It Simple, Stupid)设计哲学的具体体现。
原则 5 此前由 Fred Brooks 在《人月神话》(The Mythical Man-Month)中提出。原则 5 常被简化为:
“编写愚蠢的代码,使用智能的对象。”