wordpress 代碼品質怎麼樣?

來源:互聯網
上載者:User
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嗎 ...
第一次看源碼的確覺得面向過程的太累人,但是能把這樣的源碼看一遍,自己能力應該提升不少
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.