wordpress 代码质量怎么样?

原创
2016-06-17 08:30:27 713浏览

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核实处理。