干净代码在团队中的重要性
入职过程绝非易事。你要进入一个新项目,而周围的许多人都已经熟悉了这个项目。你必须了解一切:团队中谁做什么,具体要求是什么,团队经历过哪些技术挑战,以及接下来要做什么。这个过程可能会持续几周,有时甚至会持续几个月(在一些大型遗留项目中,这个过程可能会持续一年以上,但这是另一个话题)。如果你能省去学习编码规范的过程,因为你已经知道了清洁代码原则,那么你就不必再考虑这件事,而可以专注于其它事情。
能写出简洁的代码就像团队中的其它人能流利地使用同一种语言一样:它能让我们更容易交流,并以同样的方式编写代码,而不会注意到是谁编写了哪一部分。
简洁的代码有助于延长代码的寿命。团队合作完成一个项目时,源代码很有可能至少要维护几年。在你离开多年后,代码仍将继续得到维护。因此把事情做好是非常重要的,因为你不会永远在这里向仍在为项目工作的人解释你所做的一切。
简洁地编写代码可以避免出现我们所说的单点故障(SPOF)。这些单点故障是任何项目的噩梦。它们也是遗留项目的症状。它们可以被描述为一个实体(一个开发人员、一项技术、一个库等),独自支撑着整个项目。如果这个实体失效,一切都会崩溃。
实体失败的一个具体例子就是开发人员的离职。如果他们是唯一完全了解项目如何运作的人,并且被视为项目的 "超级英雄",那么问题就大了。这意味着没有他们,项目将无法继续下去,而在他们离开后,项目的维护也将是一件非常麻烦的事情。
在 SymfonyWorld Online 2021 年冬季大会上,Symfony 框架的创建者 Fabien Potencier 就列举了一个避免 SPoF 的绝佳例子。尽管 Symfony 是一个开源项目,但自创建以来,他一直是为该项目付出最多努力的人。他在一次会议上解释说,他现在的主要任务之一是向尽可能多的人传播有关该框架的知识,使 Symfony 不再完全依赖于他。他绝对不希望自己成为 Symfony 的 SPOF,自然也希望 Symfony 能够得到维护和发展,即使他自己不再开发 Symfony 之后也是如此。
避免这个问题的众多方法之一就是编写清晰、简洁、易懂的代码,让每个人都能轻松理解代码的内容。读完本书后,你可能会对如何实现这一目标有一个更好的想法。
说到团队合作,另一个关键点就是代码审查。即使我们将在本书的后半部分详细介绍这些内容,我们也要在这里快速谈谈它们。如果你从未听说过代码审查,那么它就是一个由项目中的其它开发人员对你想对代码库进行的修改进行审查、阅读和评论的过程。这个过程在大多数开源项目中都是强制性的,鉴于其带来的好处,任何项目都强烈推荐采用这个过程。你现在可以很容易想象,如果每个人都用自己的方式编写代码,那么这些审查就会花费更长的时间。这包括代码格式、文件和类的分隔方式等等。如果我们说的都是同一种语言,那么我们就能在代码评审中关注那些真正重要的事情:功能需求是否得到了尊重,是否存在错误,等等。
我们将在接下来的章节中看到,清洁代码的定义往往取决于你所合作的团队。即使有一些通用规则,但主要还是取决于与你一起工作的开发人员的习惯。原因还是在于习惯和一致性。这样,团队才能更快、更好地协同工作。
如果你碰巧工作的地方有几个团队聚集在一起,你就会不可避免地注意到,每个团队都有自己的一套行之有效的规则,但也有一些通用的规则,可以让你用同一种语言与大家交流。因为解决问题的办法并不总是在你的直接团队中找到,有时也会从你周围的人那里找到,但这些人并不直接与你在同一个项目上共事。