当前位置: 首页 > 科技观察

Google的编码指南

时间:2023-03-11 23:00:24 科技观察

我发现我们在Google做的另一件非常有效和有用的事情是严格的编码指南。在谷歌工作之前,我一直认为编码标准没有用。我坚信,这些规范是在官僚体制下产生的,是为了浪费大家的编程时间,影响人们的开发效率。我大错特错了。在Google,我可以查看任何代码,查看Google的所有代码存储库,而且我有权查看它们。事实上,这种权力是很少有人能够拥有的。然而,令我惊讶的是,有这么多的编码约定——缩进、命名、文件结构、注释风格——所有这些都让我意外地容易阅读任何一段代码并轻松理解它们。这让我感到震惊——因为我认为这些规格是微不足道的事情。他们不可能做那么多——但他们做到了。当你发现只要看一下程序的基本语法结构就可以理解一段代码时,这种节省时间的做法不能不让人震惊!有很多人反对编码标准。以下是一些常见原因。我曾经相信这些理由。这是浪费时间!我是一个优秀的程序员,我不想浪费时间做这种愚蠢的事情。我的技术很好,我可以写出清晰易懂的代码。为什么我要浪费时间遵循这些愚蠢的规范?答案是:团结是可贵的。正如我之前所说的——你看到的任何一行代码——无论是你写的,还是你旁边的同事写的,或者是距离你11个时区的人写的——它们都有一个统一的结构,相同的命名约定——效果是巨大的。理解一个您不熟悉(或根本没见过)的程序只需很少的努力,因为您一看到它们就觉得很熟悉。我是一个艺术家!这话很滑稽,但却反映了一种普遍的抱怨。我们程序员通常对自己的编码风格非常自负。我写的代码确实能体现我的一些特点,是我思想的反映。这证明了我的技能和创造力。如果你强迫我遵循一些愚蠢的规范,那会扼杀我的创造力。关键是,你的风格的一个重要部分,它所表达的关于你的思维和创造力的内容,并没有隐藏在这些琐碎的句法形式中。(如果是这样,那么,你就是一个相当糟糕的程序员。)规范实际上可以让人们更容易看到你的创造力——因为他们可以看到你的工作,人们不会知道你对不熟悉的编码形式的干扰。适合所有人的鞋不一定适合任何人的脚!如果您使用的编码约定不是专门为您的项目设计的,那么它可能不是您项目的最佳解决方案。没关系。同样,这只是语法:非***并不意味着它不好。仅仅因为它不是您项目的最佳选择并不意味着它不值得遵循。是的,对于你的项目来说,你并没有得到应有的收益,但是对于一个大公司来说,收益是巨大的。另外,一般最好专门为某个项目制定编码标准。拥有自己的编码风格的项目没有错。但是,根据我的经验,在大公司,你必须有统一的编码标准,具体的项目可以扩展自己特定的项目方言和结构。我擅长制定编码标准!这可能是最常见的投诉类型。它是其他几种不同声音的混合体,但却是它自己态度的直接表达。一些反对者坚信,他们是比那些制定编码标准的人更好的程序员,屈服于这些小学生制定的标准会降低代码质量。对于这个,说得委婉一点,就是扯淡。纯粹的傲慢和荒谬。他们的实际意思是没有人值得为他们制定规范,对他们代码的任何更改都是一种破坏。如果你不能按照任何合理的编码标准写出合格的代码,你只能说你是一个糟糕的程序员。当你按照某种编码标准进行编程时,必然会有一些让你摇头的地方。在某些地方,您的编码风格肯定会优于这些规范。不过,没关系。在某些地方,编码标准也优于您的编程风格。不过,这也无所谓。只要规范不是完全不合理,程序可理解性的提高将足以弥补您的损失。但是,如果编码约定真的完全不合理怎么办?如果是这样,那就麻烦了:你被宠坏了。但这并不是因为这种荒谬的编码约定。这是因为你在和一群白痴一起工作。通过使编码标准足够荒谬来阻止优秀的程序员编写好的代码需要付出努力。它需要专注、冷静、淡化的大脑。如果这些白痴可以强制使用不可用的编码标准,那么他们可以做很多其他愚蠢的事情。如果你为这些白痴工作,你真的完蛋了——不管你做什么,不管有没有规则。(我并不是说一家公司由一群白痴经营是很少见的;不幸的是,我们的世界从来都不缺少白痴,而且很多白痴都拥有公司。)