有人说,当你的PHP代码和应用程序使用全局变量时,它一定是意大利面条代码(我假设是这样)。我经常使用WordPress。据我所知,它是接近伟大PHP软件的最好的东西。它使用许多全局变量来在组件之间进行交互。
但忘了这些吧,因为坦白说,这是我唯一知道的。所以这完全是有偏见的;D
所以,我只是好奇,意大利面条代码的特点是什么?
PS:我唯一知道的是WordPress。所以,希望,也许这将帮助某人给予一个很好的答案,对于那些在PHP上开发完整的Web应用程序(例如,Stack Overflow网站)的经验很少的人。
4条答案
按热度按时间vuv7lop31#
goto
,从本质上讲,这是一种缺乏设计和远见的行为,只是一堆乱七八糟的黑客拼凑在一起。这适用于任何语言,而不仅仅是PHP。
对于在PHP上开发完整的Web应用程序(例如,Stack Overflow网站)的经验很少的人
仅供参考,但Stack Overflow不是用PHP开发的。
2o7dmzc52#
好吧,说到你发布的评论,解释很简单。使用
global
运算符使得变量的来源是未知的,就像意大利面条的另一端。它可以在任何地方定义。所以,当你调用你的函数时,你不知道这个变量有什么值。而不是直接传递一个变量,这使得它变得简单明了:P.S. http://en.wikipedia.org/wiki/Spaghetti_code
sf6xfgos3#
意大利面条式代码有一些特殊的特点,这些特点将它与普通的糟糕代码区分开来。意大利面条式代码极其复杂且无结构,因此很难在程序中遵循流程。这就像试图解开一碗“肉酱”中的面条一样。
这就是为什么
GOTO
语句(可怕的词!)经常在这种情况下被引用:GOTO
语句将控制转移到代码库中的另一个任意定义的位置。大多数编程语言都有可以被滥用来模拟goto
风格行为的命令;例如,使用异常来实现常规业务逻辑,而不是处理错误。全局变量是意大利面条式代码的一部分,因为它们的值是在当前程序单元的作用域之外赋值的。这使得确定一个变量在代码库中的哪个位置被设置为给定的值(或者实际上它是否被设置为任何值)变得困难。
意大利面条式代码可能在功能上是正确的,也可能是执行性的。这是一个问题,因为它很难理解,所以我们不能确定它是没有错误的,而且缺乏结构也很难排除故障。出于类似的原因,意大利面条式代码很脆弱,很难修改;引入错误的风险很高。
顺便说一句,使用
goto
语句并不意味着一个程序是意大利面条。使用goto
编写清晰,结构良好的代码是完全可能的,只是需要大量的自律,不要滥用它的灵活性。现代编程语言已经使它的使用变得不必要,也不受欢迎。f45qwnt84#
WordPress是我见过的最大的一段意大利面条式的PHP代码。PHP,HTML,JavaScript和所有介于两者之间的东西都集中在同一个文件中。如果你想要另一个意大利面条式代码的例子,看看osCommerce或Zen Cart。
事实上,我敢说大多数开源PHP应用程序都是用PHP编程的令人震惊的例子。(也就是非意大利面)然后看看Yii框架或者Zend Framework .像CodeIgniter和Kohana这样的框架,虽然不是意大利面,并不是在PHP 5中如何构造事物的很好的例子,因为它们使用了PHP 4中使用的许多功能,只是因为在PHP 5之前没有更好的方法来做这些事情(例如,使用基于路径的继承而不是真正的对象继承)。
如果你想要一个合理的好的过程式编程的例子,看看Drupal。由于复杂性,它可能不是最好的PHP应用程序,但它肯定胜过WordPress,你可以用它做很多相同的事情。