Dragon
  • 本博客商城免登录支付购买BUG已经修复恢复正常,谢谢您的惠顾!
  • 注册、登陆后即可全站无广告畅快浏览本博客了!
  • 本博客已开启支持百度AI智能内容自动审核机制!
明月登楼明月登楼  2016-12-23 08:00 明月登楼的博客 隐藏边栏 |   27 条评论  10,236 
文章评分 1 次,平均分 5.0
导语: 直到今日,WordPress 依然是非常流行的博客系统,而且已经逐步升级为一个小型的 CMS 系统,而且其开放的架构,Hook 思想,可以让人把它改成各种东西,有人做了网店,也有人做了社区,无所不能啊。

明月发现很多小白站长们对 WordPress 的认知都是“人云亦云”式的,作为一个六年的 WordPress 老站长,我是对 WordPress 情有独钟一直深爱着,今天分享一篇专业 PHP 程序员仅从 WordPress 代码质量上分析一下 WordPress,看完就能理解为什么 WordPress 可以占据全世界互联网 26%的份额获得“老大”地位了。

我是 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. 界面时尚,设计潮流,紧跟时代脚步 功能简单易用,bug 很少
  4. 安全性基本符合中小网站要求
  5. 性能基本符合中小网站要求

所以,WordPress 是一个质量很好的项目,而且一直秉承着用户至上的精神,它的用户不光是写博客的博主,更是成千上万依赖 WordPress 赚取收入的自由职业程序员,WordPress 没有粗暴的要求他们不断升级插件、皮肤的版本去追随版本(比如万恶的苹果),也没有粗暴的禁止老版本的使用,而是极尽所能的兼容一切。

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

如果沉下心来,仔细研究代码,不光是审美,还要考虑历史因素,现实因素,不光研究一个版本,还要研究新版,研究代码演化,相信还是能学到很多很多东西的,或许学这个,无法成为伟大的程序员,但是,你可能会成为一个优秀的产品经理,学会怎么去尊重用户,怎么去一切以用户价值为依归,也可以成为一个优秀的工程师,学会怎么让一坨看起来丑陋不堪的代码,不断往更好的方向发展,跟上时代潮流和脚本,而不是放任它腐烂发臭。

作者:知乎匿名发布

「点点赞赏,手留余香」

还没有人赞赏,快来当第一个赞赏的人吧!

明月登楼给明月登楼打赏
×
予人玫瑰,手有余香
  • 2
  • 5
  • 10
  • 20
  • 50
2
支付

本文来自投稿,不代表明月登楼的博客立场,版权归原作者所有,欢迎分享本文,转载请保留出处!

明月登楼
明月登楼 关注:9    粉丝:0 最后编辑于:2019-07-06
玉满斋(www.ymanz.com)网站创始人,☑玉器爱好者 ☑微博控 ☑手机控 ☑历史控 ☑宅 ☑网络控 ☑Wordpress控

发表评论

表情 格式 链接 私密 签到
评论
正在努力加载中...
扫一扫二维码分享