浅谈Rob Pike的五条编程规范

简介: 浅谈Rob Pike的五条编程规范

又是一篇需要我们多些思考的文章~

简介下Rob Pike

Rob Pike是Unix的先驱,UTF-8的设计人,Go语言核心设计者之一。

Rob Pike的5条编程规则

中文翻译

罗布·派克(Rob Pike)的编程五原则

  • 原则1: 你无法判断一个程序的时间消耗在哪里。瓶颈常常出现在意想不到的地方,所以在证明瓶颈确实存在之前,不要试图猜测并添加加速技巧。
  • 原则2:测试。在测试之前,不要调整速度,即使测试之后,除非一部分代码明显超过其他部分,否则也不要调整速度。
  • 原则3:当n很小的时候,花哨的算法很慢,而n通常都很小。花哨的算法具有大的常数。在你知道n经常变得很大之前,不要使用花哨的算法。(即使n确实变得很大,也要首先使用原则2。)
  • 原则4:花哨的算法比简单的算法更容易出错,而且更难实现。使用简单的算法和简单的数据结构。
  • 原则5:数据占主导地位。如果你选择了正确的数据结构并把事情组织得很好,那么算法几乎总是不言自明的。数据结构而不是算法是编程的核心。

派克的原则1和原则2重申了托尼·霍尔(Tony Hoare)的名言“过早的优化是所有邪恶的根源”。肯·汤普森(Ken Thompson)将派克的原则3和原则4重新表述为“当有疑问时,使用暴力手段”。原则3和原则4是KISS设计哲学的实例。原则5之前由弗雷德·布鲁克斯(Fred Brooks)在《人月神话》中提出。原则5通常被缩短为“编写使用智能对象的愚蠢代码”。

我的理解

罗布·派克的编程五原则为编程提供了重要的指导。

对于原则1,你无法判断一个程序的时间消耗在哪里。这个原则强调了性能分析的必要性。在尝试优化代码之前,你应该首先确定代码的哪部分是性能瓶颈。性能分析可以通过工具和技术来进行,例如使用性能分析器(profiler)来检测代码的热点。通过分析代码的运行时间和资源消耗,你可以找到需要优化的关键部分。

对于原则2:测试。这个原则强调了基准测试的重要性。只有通过测量代码的实际性能,你才能确定哪些部分需要优化。基准测试可以帮助你了解代码在不同输入和数据规模下的性能表现。在进行基准测试时,确保使用真实的数据和场景,以获得准确的性能数据。只有通过测量,你才能做出明智的优化决策。

对于原则3,当n很小的时候,花哨的算法很慢,而n通常都很小。这个原则提醒我们在选择算法时要考虑数据规模。对于较小的数据集,简单的算法通常表现更好,而且更容易实现和调试。花哨的算法可能在理论上具有更好的性能,但在实际应用中可能会受到常数因子和实现复杂度的限制。因此,在选择算法时,要根据实际的数据规模和问题要求来做出决策。

对于原则4,花哨的算法比简单的算法更容易出错,而且更难调试。这个原则强调了简单和清晰的重要性。简单的算法和数据结构更容易理解、实现和维护。花哨的算法可能涉及复杂的逻辑和数学操作,增加了出错的可能性并降低了代码的可读性和可维护性。在编程中,简单通常是一种美德,因为它减少了出错的可能性并提高了代码的可读性和可维护性。

对于原则5,数据占主导地位。这个原则强调了数据结构选择的重要性。选择合适的数据结构可以极大地影响代码的性能和可读性。数据结构决定了如何组织和访问数据,对于特定的问题和数据规模,选择适当的数据结构可以显著提高代码的性能。在选择数据结构时,要考虑数据的特征、访问模式和问题要求。通过选择合适的数据结构,你可以将算法的效率最大化。

总的来说,罗布·派克的编程五原则提醒我们在编程时要保持目标导向,避免过早优化,选择合适的算法和数据结构,以提高代码的性能和可维护性。这些规则强调了性能分析、基准测试、数据规模和简单性的重要性。通过遵循这些原则,你可以编写出高效、健壮和易于维护的代码。

相关文章
|
4月前
|
设计模式 开发者 Python
惊呆了!Python元类竟能如此玩转,你的编程世界将不再有界限
【7月更文挑战第6天】Python元类是类的类,用于控制类的创建。它们让开发者能自定义类的行为,如添加方法、改变继承或实例化过程。例如,定义一个元类`my_metaclass`,它会在创建类时自动添加新方法。元类广泛应用在单例、插件系统和ORM等高级场景,拓展了Python代码的灵活性和威力。掌握元类,揭开编程魔法的面纱,为代码解锁更多可能。
25 0
|
6月前
|
数据采集 数据挖掘 Python
最全妙不可言。写出优雅的 Python 代码的七条重要技巧,2024年最新被面试官怼了还有戏吗
最全妙不可言。写出优雅的 Python 代码的七条重要技巧,2024年最新被面试官怼了还有戏吗
|
6月前
|
数据可视化 数据挖掘 Go
GOplot|宝藏R包,拯救你的GO富集结果,杜绝平庸的条形图
`GOplot`是一款R包,专注于GO富集分析的可视化,提供多种图表类型如GOBar、GOBubble、GOCircle、GOChord和GOVenn等。这些函数允许用户轻松修改参数,定制颜色、大小和排序,实现数据的直观展示。示例代码展示了如何使用这些功能创建不同类型的图形,并提到了一个配套的shiny应用。`GOplot`简化了复杂的数据可视化过程,适合快速高效地展示差异分析结果。
151 0
|
JSON 编译器 测试技术
Go 开发十种常犯错误(上)
Go 开发十种常犯错误
50 0
|
测试技术 Go 开发者
Go 开发十种常犯错误(下)
Go 开发十种常犯错误
54 0
|
机器学习/深度学习 C语言
一起啃书(C Primer Plus 第六版)--循环<附大量编程题>
一起啃书(C Primer Plus 第六版)--循环<附大量编程题>
138 0
|
存储 Rust 供应链
编写完10万行代码,我发了篇长文吐槽Rust
编写完10万行代码,我发了篇长文吐槽Rust
179 0
|
算法 C语言
C语言基础犄角旮旯的知识之分支与循环结构
C语言基础犄角旮旯的知识之分支与循环结构