1
9
术语“意大利面代码”一点也不特定于PHP——它适用于所有编程语言,在大多数语言中都应该非常相似(至少是相同的范例)。不过,您可能理解这一点,只需要一个PHP示例。 这个 Wikipedia article 关于这个问题似乎很清楚:
这个论坛主题, Top 100 Signs That I Am Writing Spaghetti Code in PHP ,可能对您有所帮助,因为它专门与PHP相关。 |
2
11
区别在于面条代码是由其他开发人员编写的。你的代码绝不是意大利面条代码。 |
3
4
这里有一个相当不错的定义 spaghetti code . 它是一个主观术语,用于描述代码过于复杂、结构不良、难以理解、不一致、依赖副作用(尤其是全局副作用)或这些副作用的某种组合。 与大多数脚本语言一样,PHP是松散类型的。在使用变量之前不需要声明变量。在“全局”范围内使用了许多变量,并且有一些规定隐式地包括文件(自动加载),仅举几个例子。这些都不是坏的功能,但如果使用不当,它们很容易导致意大利面代码。 |
4
0
在编写良好的代码中,您应该能够清楚地遵循流程,不仅从开始到结束,而且从完成到开始(除非存在致命的错误条件,在这种情况下,您的处理程序应该有回溯输出)。 每个功能都遵循一个入口和一个出口的规则。 . 避免意粉代码的一种方法是确保RETURN语句是您在函数中编写的最后一件事情,并且您从来没有比这更早的返回。 如果一个函数返回了一个意外的值,干净的代码将允许您从RETURN语句开始,然后向后查看它的值在哪里。但是,如果代码是意大利面,那么大约一半的时间您将浪费数小时的时间困惑函数如何返回该值,直到您偶然发现埋在函数中间的第二个返回语句为止。 我强烈反对克莱特斯和安多马尔的说法 全部的 主观的。函数中间的返回语句显然是意大利面代码。 |
5
0
这个 classical definition 意大利面条式代码是“由于使用了非结构化分支,其控制流很难遵循的代码”。因为PHP,就像70年代发明的大多数语言一样,不支持Goto,理论上你不能用它编写意大利面代码。(更新:从5.3开始,php确实有goto语句,但它在破坏性方面仍然有一定的局限性) 然而,一个好的近似值可以通过长的脚本和函数来实现,这些脚本和函数可以自由地使用全局变量。奖励积分 deeply nested if/elseif/else cascades 格式错误。添加一些可以生成HTML的HTML、javascript、PHP、PHP的混合,以及 PHP which generates JavaScript which generates HTML 你要确保没有人能理解代码,即使是编写代码的人。 |
Jacco · 未能格式化我的日期以在php中正确工作 1 年前 |
jay ram · 如何在URL核心php中从API获取JSON? 1 年前 |
Ishwarya A · php电子表格在浏览器中显示多张excel 1 年前 |