目录
回复内容:
首页 后端开发 php教程 wordpress 代码质量怎么样?

wordpress 代码质量怎么样?

Jun 17, 2016 am 08:30 AM
drupal joomla wordpress

wordpress就用了很久的,但底层代码接触不多。不知道各位高手怎么评价与joomla和drupal比,单从质量上,wordpress处在什么水平?

回复内容:

我是WordPress多年的老用户了,从WordPress 1.5开始使用,到WordPress 2.3开始出现重大改革,后来逐步的WordPress 3.x,4.x,我依然坚持着使用WordPress,而且,也因为从2.0时代开始,深度研究WordPress的代码,我成为了一名PHP程序员。

现如今,我已经是一个工作5年的PHP程序员了,我觉得问到这种问题,我理应出来回答一下。

代码质量,这四个字,我们先讨论下它们的内涵和外延吧,如果概念不清的话,我想大家也是无法评价的。不如看到这里的同学来告诉我,谈到代码质量,你们想到的都是些什么?
  • 高内聚
  • 低耦合
  • 可读性
  • 可维护性
  • 可测试性
  • 分层
  • 抽象
  • DRY
  • 面向对象
  • 设计模式
不知道我说全了没有?反正无法说全的吧,还有很多很多咯……如果这么去评价这个项目的话,我只能说,WordPress的代码还是挺烂的啦~

但是,如果我们来看看WordPress的故事,相信你有不同的看法。首先,我们来看看WordPress出现的年代,WordPress众所周知的作者Matt,是1984年生人,他在2003年1月的时候,开始写WordPress,那时候,因为他使用一个叫 b2/cafelog 的程序,觉得不爽,希望让它能够支持现代的Web标准,才发起这个项目,是在cafelog的代码基础上开始改写的。所以,WordPress不是从0开始构建的,本身是站在巨人肩膀上的,但是这个巨人,基本上垂垂老矣了(连Web标准的概念都没有)。

再来看看那个年代吧,首先那时候的Matt,是休斯顿大学政治科学系大一学生,然后他是萨克斯乐手,喜欢音乐、摄影和旅游,所以,他在编程方面是个菜鸟……他当时只有19岁。所以说,他就算搞不定这事情也毫不奇怪,而结果WordPress成了世界上最著名的博客程序,可见,他还是非常天才的,他搞定了,而且,看看他搞这个的目的,他需要一个满足自己要求和符合Web标准的博客程序,仅此而已,而他做到了!

当时的外部环境呢?说到WordPress,就无法不提到PHP,PHP那时候,正式取得巨大成功的时候,但是不好意思的告诉你们,PHP取得巨大成功,是从PHP4.x开始的,而PHP作为一个饱受诟病的语言,从开始就根本没有面向对象的概念,只是为了解决Web开发而设计的一个语言而已,那时候估计还没想过用PHP做多伟大的软件,只是想做个Home Page而已。支持面向对象的PHP 5.x,是2004年7月才首次Release的,而且那时候,PHP 4.x已经是非常巨大的成功,而且已经成功了好多年,以至于很多软件都来不及迁移到5.x。

所以,大家想想吧,用最烂的PHP语言(不支持面向对象),用面向过程的编程范式,写了一个能run的blog,而且功能完善齐备,部署简单,安装顺利,bug很少,你们说说代码质量怎么样啊?别问我啊,我不知道啊。

我直到2.x之后,能力才逐渐能够潜心下来看代码,WordPress里面的很多思想还是非常牛逼闪闪的。比如,它的Action和Hook机制。这个玩意儿,说有多神秘,一点也不啊。这不就是一个Observer设计模式嘛,就那么自然而然地在里面,用来解决问题了啊,而且是用面向过程实现的Observer哦!插件机制,不就是依赖注入嘛。还有优先级队列啊!处理Category那里,递归,树的构造,算法也杠杠的啊。再看到了2.3的时候,引入的tag,信息检索的思维也是杠杠的啊,tag的思想比起树状的分类目录,已经直达现代了啊。

WordPress另一个厉害的地方是演化,从PHP 4.x走来,进化到PHP 5.x,然后它长时间都是同时支持PHP 4.x和PHP 5.x的语法的,我想说的是,PHP 4发展到晚期,出现了面向对象了,但是很简陋,连访问控制都没有啊,可是WordPress一直在同时支持两代语言的语法啊!一直考虑了很多个人博主使用虚拟主机,不易随便升级系统的困扰,尽可能让他们用上更好的版本啊。

等到历史的车轮驶入PHP 5.x后,里面一个又一个的模块,在一个个迭代里面,逐步的面向对象化。Widget的Class版出现,首先结束了写个Widget用一坨面向过程方法。后面,渐渐的越来越多内部模块都逐渐面向对象化了。在实施这个过程的时候,所有用老的版本开发的插件,都持续地能用,WordPress的向下兼容,不但跨越各种Minor版本号,也跨越Major版本号好不好。我在2.x写的某些插件,现在还能继续使用呢!

抒发感慨都抒发得我累了。

WordPress从代码审美来看,依然不是什么漂亮的作品。里面代码脏、乱,各种trick,表现和逻辑混杂,耦合等等问题,不胜枚举。

但是从用户至上的角度来看代码质量的话,WordPress毫无疑问可以排进世界上最好的软件名录里面。
  1. 部署简便,依赖少,基本不依赖各种扩展;
  2. 向下兼容,兼容机器(*nix、win),兼容解释器(PHP 4.x、5.x),兼容数据库(MySQL,PostgreSQL),兼容社区(插件、皮肤的老版本)
  3. 界面时尚,设计潮流,紧跟时代脚步
  4. 功能简单易用,bug很少
  5. 安全性基本符合中小网站要求
  6. 性能基本符合中小网站要求
所以,WordPress是一个质量很好的项目,而且一直秉承着用户至上的精神,它的用户不光是写博客的博主,更是成千上万依赖WordPress赚取收入的自由职业程序员,WordPress没有粗暴的要求他们不断升级插件、皮肤的版本去追随版本(比如万恶的苹果),也没有粗暴的禁止老版本的使用,而是极尽所能的兼容一切。

所以,直到今日,WordPress依然是非常流行的博客系统,而且已经逐步升级为一个小型的CMS系统,而且其开放的架构,Hook思想,可以让人把它改成各种东西,有人做了网店,也有人做了社区,无所不能啊。

如果沉下心来,仔细研究代码,不光是审美,还要考虑历史因素,现实因素,不光研究一个版本,还要研究新版,研究代码演化,相信还是能学到很多很多东西的,或许学这个,无法成为伟大的程序员,但是,你可能会成为一个优秀的产品经理,学会怎么去尊重用户,怎么去一切以用户价值为依归,也可以成为一个优秀的工程师,学会怎么让一坨看起来丑陋不堪的代码,不断往更好的方向发展,跟上时代潮流和脚本,而不是放任它腐烂发臭。 如果你没见过core/plugin架构的系统,你会说wordpress丑;如果你看过一些core/plugin架构的系统,emacs, vim,drupal,joomla各种CMS,你会发现WP是这些当中最简单“优雅”的;读了书不反刍拿着“耦合高”来事的,应该先想一想core/plugin的架构和这种架构下要低耦合所需要的代价;况且,反过来想core+plugin本身不就是最大的低耦合吗? 均面向过程编程,自从开始面向对象,生活便晴朗了许多 钩子
钩子
钩子~ 其实有一种不看代码的简单评判代码质量的方法:
1. 如果是被广泛使用的底层基础代码并且时间悠久, 那么该代码质量性能与稳定性有保证;
2. 如果是被广泛使用的应用代码并且时间悠久, 那么该代码架构必然落后并且耦合严重; 丑 cry 有人说,WordPress的代码像诗一样。
我觉得,他一定是某个字发音错了… 机动灵活,性能较差,适合小网站。
网站流量大一些就需要深度优化,分表啥的挺烦人 比较杂乱,到处都是强耦合,烟囱林立。 没看鸟哥测php性能都是用wordpress吗 ...
第一次看源码的确觉得面向过程的太累人,但是能把这样的源码看一遍,自己能力应该提升不少
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1666
14
CakePHP 教程
1425
52
Laravel 教程
1327
25
PHP教程
1273
29
C# 教程
1253
24
wordpress文章列表怎么调 wordpress文章列表怎么调 Apr 20, 2025 am 10:48 AM

有四种方法可以调整 WordPress 文章列表:使用主题选项、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代码(在 functions.php 文件中添加设置)或直接修改 WordPress 数据库。

wordpress主机怎么建站 wordpress主机怎么建站 Apr 20, 2025 am 11:12 AM

要使用 WordPress 主机建站,需要:选择一个可靠的主机提供商。购买一个域名。设置 WordPress 主机帐户。选择一个主题。添加页面和文章。安装插件。自定义您的网站。发布您的网站。

wordpress主题头部图片如何更换 wordpress主题头部图片如何更换 Apr 20, 2025 am 10:00 AM

更换 WordPress 主题头部图片的分步指南:登录 WordPress 仪表盘,导航至“外观”&gt;“主题”。选择要编辑的主题,然后单击“自定义”。打开“主题选项”面板并寻找“网站标头”或“头部图片”选项。单击“选择图像”按钮并上传新的头部图片。裁剪图像并单击“保存并裁剪”。单击“保存并发布”按钮以更新更改。

wordpress怎么导入源码 wordpress怎么导入源码 Apr 20, 2025 am 11:24 AM

导入 WordPress 源码需要以下步骤:创建子主题以进行主题修改。导入源码,覆盖子主题中的文件。激活子主题,使其生效。测试更改,确保一切正常。

wordpress怎么查看前端 wordpress怎么查看前端 Apr 20, 2025 am 10:30 AM

可以通过以下方法查看 WordPress 前端:登录仪表盘并切换到“查看站点”选项卡;使用无头浏览器自动化查看过程;安装 WordPress 插件在仪表盘内预览前端;通过本地 URL 查看前端(如果 WordPress 在本地设置)。

wordpress屏蔽ip的插件有哪些 wordpress屏蔽ip的插件有哪些 Apr 20, 2025 am 08:27 AM

WordPress 屏蔽 IP 的插件选择至关重要。可考虑以下类型:基于 .htaccess:高效,但操作复杂;数据库操作:灵活,但效率较低;基于防火墙:安全性能高,但配置复杂;自行编写:最高控制权,但需要更多技术水平。

wordpress编辑日期怎么取消 wordpress编辑日期怎么取消 Apr 20, 2025 am 10:54 AM

WordPress 编辑日期可以通过三种方法取消:1. 安装 Enable Post Date Disable 插件;2. 在 functions.php 文件中添加代码;3. 手动编辑 wp_posts 表中的 post_modified 列。

wordpress账号怎么注册 wordpress账号怎么注册 Apr 20, 2025 am 11:45 AM

要在 WordPress 上创建账号,只需访问其网站,选择注册选项,填写注册表,并验证您的电子邮件地址。其他注册方法包括使用 Google 账号或 Apple ID。注册的好处包括创建网站、获得功能、加入社区和获得支持。

See all articles