假设你正在启动一个电子商务网站。
你的第一位工程师是蓝色时期的毕加索。你的代码库很快就被毕加索蓝色时期的 JavaScript 文件填满了。他毫不费力地为你编写了一个 JavaScript 购物车。他以前做过无数次了。但这是他最好的一次。这是他的杰作。而且非常蓝色。
你的第二位工程师是萨尔瓦多·达利。第一天上班,他带着一台相机、一把画笔、一把滑稽的胡子出现了,并开始贡献一些疯狂的超现实主义 JavaScript 文件。
这影响了毕加索,当他们一起工作时,毕加索开始改变风格,并开始向代码库添加立体主义文件。代码库是如此新颖,以至于毕加索和达利可以随时添加新文件而不会造成任何损害,因为当只有两位工程师添加新功能时,就没有维护工作。没有人踩到别人的脚趾。每个人都有足够的颜料。
然后你聘请了莫奈,他来给一切留下他的印象。
现在,你在/app/assets/javascripts
中有了蓝色时期的购物车、印象派图像懒加载、超现实主义照片幻灯片和立体主义风格的事件跟踪。javascripts 文件夹变成了一个博物馆。
让我们跳到四年后的未来。许多主要功能已经构建完成。毕加索已经离开公司,去追求一家建立在格尔尼卡风格上的公司。你的业务重点略微转移了,你需要有人扩展毕加索的蓝色时期购物车以支持协同购物(许多人实时共享同一个购物车)。
幸运的是,你刚刚聘请了一位 JavaScript 领域的冉冉升起的新星,他喜欢在墙上喷漆,他的名字叫班克斯。所以你告诉班克斯:“嘿,你的第一份工作是需要你修改我们的购物车以支持协作。对于大型重新发布来说,时间非常重要,幸运的是这应该非常容易,因为我们已经有毕加索的购物车了,而且它已经是一部杰作了。只需重复使用它即可。”
于是班克斯进去,在你的毕加索购物车上喷漆,使其具有协作性,你成功地进行了大型重新发布。
一个月后,收到了一个关于从购物车中删除商品的错误报告。班克斯正忙于另一个项目,所以你让莫奈去修复它。
莫奈不知道如何使用喷漆罐。因此,他尝试修复它的尝试很粗糙。他破坏了构建。他换回画笔,只是在上面涂抹,但这花费的时间比预期要长得多,因为需要时间去理解和采用一种不熟悉的风格。
当超过 80 位工程师贡献到一个代码库时,你会很快了解到,你通常的做法行不通。所以我们试图让每个人都变成毕加索。无论你在代码库的哪个位置跳转,所有文件都很熟悉,看起来像是你画的。
最重要的是,无论你喜欢的 JavaScript 风格是什么,在与团队或将来必须维护的大型代码库合作时,保持一致性非常重要。
对我们团队最有效的风格是我们的毕加索风格,因为这就是一切的开始方式。
我们将我们的风格指南开源,以便其他团队可以将其复制并将其转换为莫奈风格指南或班克斯风格指南。这很有趣,可以观看。
作为一名从事副项目并探索你可以用 JavaScript 完成的所有精彩事情的独立画家/工程师,请抛弃约定,忽略任何其他人曾经说过的一切。
这是世界欣赏下一个毕加索的唯一途径。