Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 意大利面代码的特点是什么?_Php_Wordpress_Coding Style - Fatal编程技术网

Php 意大利面代码的特点是什么?

Php 意大利面代码的特点是什么?,php,wordpress,coding-style,Php,Wordpress,Coding Style,有人说,当您的PHP代码和应用程序使用全局变量时,它必须是意大利面条代码(我假设是这样)。我经常使用WordPress。据我所知,这是最好的接近伟大的PHP软件。它使用许多全局变量在其组件之间进行交互 但是忘了它吧,因为坦白说,这是我唯一知道的。所以这是完全有偏见的;D 所以,我只是好奇,意大利面代码的特点是什么? 我只知道WordPress。因此,希望这能帮助那些在PHP上开发完整web应用程序(例如,Stack Overflow网站)方面经验不足的人给出一个很好的答案 没有模块化(一个文件

有人说,当您的PHP代码和应用程序使用全局变量时,它必须是意大利面条代码(我假设是这样)。我经常使用WordPress。据我所知,这是最好的接近伟大的PHP软件。它使用许多全局变量在其组件之间进行交互

但是忘了它吧,因为坦白说,这是我唯一知道的。所以这是完全有偏见的;D

所以,我只是好奇,意大利面代码的特点是什么?

我只知道WordPress。因此,希望这能帮助那些在PHP上开发完整web应用程序(例如,Stack Overflow网站)方面经验不足的人给出一个很好的答案

  • 没有模块化(一个文件、类、模块、命名空间、包中的所有内容,或您的语言用于提供模块化的任何内容)
  • 大量的
    转到
  • 组织不力,
  • 没有明确的功能和目的分离。(即,所有包含的类或函数)
  • 长函数
  • 糟糕的命名
  • 整个过程中没有一致的编码风格
  • 代码的实现和客户端之间没有明确的接口契约。(也就是说,没有说明功能的输入、输出、前置和后置条件是什么)
  • 过度依赖数据结构的内部结构,几乎没有抽象
  • 函数随机排列/修改全局状态,文档中未提及
  • 缺少非平凡代码的注释或文档
  • 比它需要的更复杂的代码
  • 缺乏重用。(大量重复代码,也称为)
  • 没有验证或单元测试(它基于信念工作)
  • 神奇的数字
从本质上说,缺乏设计和设计 深思熟虑,只是一堆 黑客们齐头并进。这适用于任何语言,而不仅仅是PHP

对于在PHP上开发完整web应用程序(例如,Stack Overflow网站)方面经验不足的人


仅供参考,但堆栈溢出不是用PHP开发的。

好吧,说到你发表的评论,解释非常简单。 使用
global
操作符使变量的来源未知,就像意大利面条的另一端一样。它可以在任何地方定义。所以,当你调用你的函数时,你不知道这个变量有什么值。相反,直接传递变量使其变得简单明了:

function hello_testing($conditional_random) {
  if ($conditional_random)) {
      echo "foo is inside";  
  }
}

另外,意大利面代码有着特殊的特征,它区别于普通的糟糕代码。意大利面是极其复杂和无组织的,因此很难在程序中遵循流程。这就像试图解开一碗博洛尼亚牛肉中的面条

这就是为什么在本文中经常引用
GOTO
语句(可怕的词!):一个
GOTO
语句将控制转移到代码库中另一个任意定义的位置。大多数编程语言都有可以被滥用的命令来模拟
goto
风格的行为;例如,使用异常来实现常规业务逻辑,而不是处理错误

全局变量有助于生成意大利面代码,因为这些值的赋值超出了当前程序单元的范围。这会使确定变量在代码库中的什么位置设置为给定值(或者是否设置为任何值)变得困难

意大利面条代码在功能上是正确的,并且是有表现力的。这是一个问题,因为它很难理解,所以我们不能确定它是否没有bug,并且由于缺乏结构,很难进行故障排除。出于类似的原因,意大利面条代码脆弱且难以更改;引入错误的风险很高

顺便说一句,使用
goto
语句并不意味着程序就是意大利面条。使用
goto
编写清晰、结构良好的代码是完全可能的,只是需要自律,不要滥用它的灵活性。现代编程语言使得它的使用变得不必要,也不受欢迎。

是我见过的最大的一段意大利面PHP代码。PHP、HTML、JavaScript和所有东西的惊人混合都集中在同一个文件中。如果您想要另一个意大利面条代码示例,请查看或

事实上,我敢说绝大多数开源PHP应用程序都是关于如何用PHP编程的令人震惊的例子。如果您想看一个好的结构化示例(即非意大利面),那么请看框架或。像and这样的框架虽然不是意大利面,但对于如何在PHP5中构造东西来说并不是很好的例子,因为它们使用了PHP4中使用的许多特性,只是因为在PHP5之前没有更好的方法来实现它们(例如,使用基于路径的继承而不是真正的对象继承)


如果你想要一个程序编程的合理的好例子,看看。由于其复杂性,它可能不是性能最好的PHP应用程序,但它确实优于WordPress,您可以用它做许多相同的事情。

全局变量下你是什么意思?
?WordPress是主流PHP编程中最差的例子之一,主要原因是他们极度依赖全局变量。正因为如此,他们在安全方面名声不佳。我会举一些例子说明为什么它不好,但我已经写了一篇长篇大论()。如果您想获得构建PHP web应用程序的经验,我建议您研究一些PHP框架,例如Zend、Symfony或CodeIgniter。@zombat CodeIgniter也不太好看@justjoe看了一个关于如何改进意大利面代码的示例,并给出了我的答案。(参考)“我经常使用WordPress。据我所知,这是最好的PHP软件。”--我笑了。Wordpress是出了名的糟糕