虽然这可能会为您提供美味的意大利晚餐,但关于代码库,你最不想知道的就是意大利面。你的代码是一团乱七八糟的意大利面条的想法令人震惊,但对于许多开发人员来说,这个想法太抽象了,以至于他们无法完全理解它(或者理解如何避免或修复它)。这就是为什么在本文中我们将深入探讨什么是意大利面条代码,向您展示一些避免它的最佳实践,以及(当它确实发生时)如何处理它。
什么是意大利面条代码?
意大利面条式代码是一场噩梦,事实确实如此。就像我们上面说的,这个俚语之所以得名,是因为,就像一个巨大的意大利面条球,如果你拉一根绳子(一段代码),它最终会缠在一起,直到另一根或所有缠结的部分断裂。
例如,考虑! CSS 中的重要属性。它功能强大,允许设计人员覆盖继承的样式并控制任何特定元素,而无需重新编码整个样式表。但是当他们(或未来的开发人员和设计师)需要调整其他东西时,他们可能会添加另一个! important 标签覆盖之前的标签。等等。但是,如果您要返回并删除或更改该堆栈中的任何样式,则页面上的任何样式都可能被破坏。
我们正在努力避免这种情况。
避免意大利面条代码的最佳实践
1.制定编码标准
防止意大利面条式编码的第一种方法是在您的组织或项目中创建和编码标准。编码标准使像 WordPress 这样的项目成为可能。数以千计的开发人员已经在 WP Core 上工作,但 WordPress 编码标准使他们能够在相同的指导方针下工作,并在相同的参数下以相同的方式执行任务。
编码标准只是您执行的规则。它们使每个人的代码都以相同的模式运行,使错误易于查找和修复,并且未来的开发人员(甚至您或您当前的团队)确切地知道每行代码的工作效率。如果 Susan 的代码没有通过测试,它就不会进入。如果 Janine 的代码没有要运行的测试,拉取请求将被拒绝。 Daniel 在他最近的 pull request 中可能没有使用 div。除非事情崩溃,否则不要合并。
同样,一些被意大利面条代码困扰的原始代码库是没有功能逻辑的旧语言。该代码不是基于函数的,因此各种逻辑都针对代码中的特定行。对于小型项目,这并不难驾驭。当您开始扩展项目时,直接引用特定文件和代码行会阻碍开发。文件可能丢失,行可能被删除或编号不正确。对其进行调试以弄清楚哪条意大利面条被拉动可能需要数百个工时。拥有编码标准可以防止这种混乱的发生。
因此,通过拥有一个标准,您可以非常有效地减少拥有意大利面条式代码存储库的机会。如果您想了解有关编码标准的更多信息,GeeksforGeeks 有一个很好的指南。
2.遵循风格指南
除了编码标准之外,遵循风格指南还可以防止您的代码过于混乱。虽然在理论上听起来很相似,但两者却截然不同。开发人员遵循编码标准作为可执行规则,以保持代码高效运行。这些可能因组织中的项目和团队而异。
但是,通常为每种语言编写风格指南,提供一组使代码可读性和功能性的最佳实践。例如,Airbnb 为 React.js 创建了最好的风格指南之一。如果您不是 React 开发人员,那没有任何意义。但对于 React 开发人员来说,看一看它确实有助于构建和编写代码,以便未来的开发人员可以尽可能多地对其进行排序。
与一般的编码标准相比,风格指南不一定是可执行的规则。他们的建议是使代码更统一,从而更易于阅读。这可以防止出现意大利面条式代码,因为您确切地知道在任何给定时间拉哪条线。
3.注释您的代码
代码注释可能是防止您的存储库被意大利面条代码填满的最简单方法。撰写内容时,对其进行评论。如果它是一个复杂的函数或一段代码,请解释逻辑的作用及其重要性。
但是,你会遇到依赖代码注释来防止混淆的问题。首先是它给项目增加了很多额外的时间。当您忙于按时完成任务或确保功能正常运行时,编写详细说明并不总是第一位的。如果您开始评论并在项目中期退出,或者下一位开发人员无法继续前进怎么办?那是一盘意大利面。
其他人对注释代码的想法感到不自在,或者如果他们以前没有做过,就学着注释他们的代码——他们会因为庞大的数量而增长。这是完全正确的。但是,即使您偶尔对重要的(甚至不稳定的)台词或摘录发表评论,您也会避免某人(可能是您自己)过去使用它,试图弄清楚它的作用。
总结
我再说一遍,意大利面条代码是一场噩梦。花费大量时间试图找出在巨大的存储库中更改了哪些代码行是作为开发人员最糟糕的部分之一。调试工作正常。调试,不知道从哪里开始,甚至不知道是什么导致了问题。但是,如果您的团队制定了编码标准,遵循语言风格指南,甚至制定了次要的代码评论政策,那么您的数字面条很可能会比其他情况少得多。
如何防止意大利面条代码?
Donnay Style/shutterstock.com 文章的精选图片
资源