wordpress 代码质量怎么样?

WBOY
Release: 2016-06-17 08:30:27
Original
1029 people have browsed it

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吗 ...
第一次看源码的确觉得面向过程的太累人,但是能把这样的源码看一遍,自己能力应该提升不少
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!