代码简洁性之道:软件设计法则与开发体验优化

本文深入探讨代码简洁性的重要性,分享软件设计的基本原则,并分析Google优秀开发者体验背后的核心要素,强调软件工程基础建设对长期开发效率的关键影响。

代码简洁性第二版修订

2012年8月22日 by Max Kanat-Alexander

六月,我发布了《代码简洁性》的第二版修订。有些人可能已经知道,但我觉得应该让其他人都了解这个信息。

最重要的变化是本书现在更快地进入了软件设计的法则和规则。它以完全重写的前言开始,讲述了我如何开发《代码简洁性》中的原则,以及为什么您可能对这些原则感兴趣。然后进入更短的第一章,将旧版第一章的所有内容浓缩为几页,跳过了旧的第二章(关于某物成为科学的漫长讨论),直接进入法则部分。

特别是如果您读过原始版本,我非常希望听到您对新修订版起始内容的反馈!

-Max

附言:如果您从O’Reilly购买了电子书,您可以免费获得每个新修订版,而且可能还会有比这个更多的修订版!如果您从其他地方获得了电子书,书内有一个小链接可以让您以相当便宜的价格"升级"到O’Reilly版本,这样您也可以免费获得这个修订版和所有未来的修订版。我对您获取书籍的任何特定方式都没有偏见,但O’Reilly版本绝对是获取新修订版的最佳方式。

什么造就了优秀的开发者体验?

我很高兴今年在2025年开发者生产力工程峰会上发表主题演讲。我谈到了什么造就了优秀的开发者体验。特别是,这次演讲涵盖了我们在所有开发者体验工作中试图优化的三个核心要素。希望对您有所帮助!

为什么Google拥有如此出色的开发者体验?

Google是否在这方面投入了比任何人都多的资金?是的,如果将Google基础设施的所有人力成本加起来,Google可能在开发者体验上的投入比任何人都多。但这实际上不是Google在这方面成功的核心原因,因为Google早期开发者体验并没有涉及大量工程师。实际上,它涉及了相对较少的优秀工程师,他们随着时间的推移相当缓慢地构建工具。Google一些最受欢迎的工具最初只由三四人构建完成。

关键在于这些工程师被允许专注于开发者基础设施的基础要素,无论需要多长时间才能做好。每个人都在朝着开发者体验的长期全局最大值努力,而不是短期即时需求。优秀的工程师被赋予自由去提出诸如"完美的构建工具应该是什么样子"这样的问题,然后尝试构建它。源代码控制、代码审查、编程语言基础设施、CI、IDE、通用库以及开发者体验的许多其他部分也是如此。当然,有时我们在此过程中构建了糟糕的东西,但公司足够关心做好它,以至于我们(通常)会回头修复它,最终。

Google开发者体验和速度的关键在于这种对软件工程基础的关注。这不仅仅在开发者工具团队中,而是贯穿整个公司——Google的工程师比我在任何其他地方看到的都更关心代码质量、测试等。

行业其他地方技术领导者最常犯的错误之一就是未能关注所有这些工程基础。代码库可维护吗?您是否拥有高效可靠地构建高质量软件所需的基本工具?是否有系统确保新软件工程师能够快速上手项目,并随着时间的推移提高他们的技能?等等。

相反,我经常看到领导者坚持在破碎的基础上紧急解决即时问题,没有任何真正在未来解决这些基础的计划。这有点像酒店建造者看到所有其他酒店都有很棒的顶层套房,然后坚持团队建造美丽的顶层套房,而建筑却有裂缝的地基和漏水的管道。修复地基可能很困难,但如果您不这样做,肯定会后悔。

基础有时感觉抽象或不重要,因为它们不是您被要求交付的即时产品。但让我告诉您,如果您想要能够交付任何东西,基础才是最重要的。

计算机从来不是任何事情的原始原因

计算机从根本上没有意志力(在没有先前指令的情况下做出导致行动的决定的能力)。总是有某个地方的人类给了计算机指令,它才能做它正在做的事情。

这对AI和所有其他计算机软件都是一样的。

这不仅仅是一个高层次的哲学原则。它实际上非常适用于我们在工作环境和生活中应用和使用AI的方式。

当我们说AI编码助手改进了软件开发时,实际上不是AI做到了这一点。是我们向开发者提供助手,然后他们有效地使用它。很容易认为我们只需向开发者撒上魔法仙尘,魔法仙尘就会让他们更有效率,但实际上这需要工作和关注,而这项工作和关注是关于人类操作技术的。

每当您听到有人声称计算机、软件或任何AI系统做了某事时,退后一步思考:“等等,人类实际上在那里做了什么?“理解这一点将比仅仅阅读头条新闻和LinkedIn上的肤浅热门观点让您走得更远。

解决软件系统问题的一般方法

一般来说,解决软件系统问题的方法是分配软件工程师来解决问题。

将问题分配给软件工程师的危险在于他们会编写软件来解决它。

当您看到软件系统中长期未解决的问题时,通常意味着没有人被分配来解决那个特定问题。

当您看到不必要的软件被编写时,几乎总是因为软件工程师被分配来解决某个问题,并决定编写软件是解决方法。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计