首先,我是PHP_CodeSniffer的维护者,所以我显然在这方面有偏见。但是在我作为PHP开发人员的10年中,我也在一些大型代码库上工作过,所以我希望我能带来一些具体的理由来解释为什么编码标准是一件好事。我可以写一个关于这个主题的博客系列,但我只是给你一个关于PHP_CodeSniffer是如何产生的小故事,这样你就可以理解这个工具为我解决的问题。
我参与过几个大型CMS项目。第一个背后有一堆代码和一个相对较小的开发团队。我们没有标准。但我们没有真正的问题。团队很小,在一起呆了很长一段时间。我们习惯了彼此。
然后我们构建了一个新的 CMS。我们从几个开发人员开始。那时我是一个只有两个开发人员的团队的一员。同样,编码标准并没有给我们带来任何问题。我和另一位开发人员来自相同的背景,并且已经建立了一些我们遵循的准则。那时我们不需要PHPCS。
但是这个团队一次成长为一个开发人员,最终达到了12个全职开发人员,还有不少人来来去去。有些来自旧的CMS,有些来自公司外部。它们都有不同的背景和不同的发展方法。很明显,谁写了什么代码,因为风格是如此不同。每当你处理一些复杂的事情时,你首先必须适应他们的风格,因为这不是你习惯于看到代码的方式。这就像是第一次读莎士比亚。你需要先习惯它,然后才能以自然的速度阅读。
对于开发人员来说,必须停下来弄清楚另一种编码风格的额外时间纯粹是浪费时间。这是一个想法溜走的机会,而你却陷入了间距,缩进和括号位置的困境。归根结底,这些事情并不重要。但让我告诉你,如果它们导致开发人员打破他们的流程,它们很重要。因此,我们需要一种方法来让他们摆脱困境,让开发人员做他们最擅长的事情。
与此同时,我们进一步深入研究 JavaScript。一种新语言,风格通常被扔出窗外。代码是从示例站点复制/粘贴并混搭在一起的。当学习用一种新的语言开发复杂的代码时,找到一种方法使我们的JS看起来类似于我们的PHP是有意义的。我们可以在以后将其最小化,但是我们需要能够在语言之间快速切换,以保持我们的流程。
所以PHP_CodeSniffer生来就是为了做到这一点。它帮助开发人员使用相同的编码风格,使格式化和其他诱饵问题完全摆脱困境。它允许你在一定程度上像对待你的PHP一样对待你的JS。我用它来检测特定于产品的气味,例如未翻译的字符串或开发人员未使用我们正确的类包含代码。我还将其用于特定于语言的气味,例如确保不会留下杀死IE的JS逗号。您可以将其用于任何您想要的东西。它带有一堆嗅探,这些嗅探很容易使用XML规则集文件合并在一起。你也可以写你自己的。您可以集成第三方工具,使其成为静态代码分析的一站式商店。您可以像自己喜欢的那样认真对待标准和代码气味。
PHP_CodeSniffer,就像任何开发工具一样,应该适合你。你不为它工作。如果它产生了太多你不关心的错误,请自定义标准以删除你不想要的错误,或者将错误变成警告。但是,如果我的故事听起来像是你正在经历或将来可能经历的事情,那么值得仔细看看PHP_CodeSniffer,看看它是否能帮助你。
我希望这有助于您和其他人理解为什么编码标准对某些项目和开发人员非常重要。这与细节无关。这是关于从导致开发人员失去焦点的事情列表中删除编码风格。