在 PHP 編程早期,PHP 代碼在本質上是限于面向過程的。過程代碼 的特征在于使用過程構建應用程序塊。過程通過允許過程之間的調用提供某種程度的重用。
但是,沒有面向對象的語言構造,程序員仍然可以把 OO 特性引入到 PHP 代碼中。這樣做有點困難并且會使代碼難于閱讀,因為它是混合范例(含有偽 OO 設計的過程語言)。使用 PHP 代碼中的 OO 構造 ― 例如能夠定義和使用類、能夠構建使用繼承的類之間的關系以及能夠定義接口 ― 可以更輕松地構建符合優秀 OO 實踐的代碼。
雖然沒有過多模塊化的純過程設計運行得很好,但是 OO 設計的優點表現在維護上。由于典型應用程序的大部分生命周期都花費在維護上,因此代碼維護是應用程序生命周期的重要部分。并且在開發過程中代碼維護很容易被遺忘。如果在應用程序開發和部署方面存在競爭,那么長期可維護性可能被放在比較次要的地位。
模塊化 ― 優秀 OO 設計的主要特性之一 ― 可以幫助完成這樣的維護。模塊化將幫助封裝更改,這樣可以隨著時間的推移更輕松地擴展和修改應用程序。
總的來說,雖然構建 OO 軟件的習慣不止 7 個,但是遵循這里的 7 個習慣可以使代碼符合基本 OO 設計標準。它們將為您提供更牢固的基礎,在此基礎之上建立更多 OO 習慣并構建可輕松維護與擴展的軟件。這些習慣針對模塊化的幾個主要特性。有關獨立于語言的 OO 設計優點的更多信息,請參閱 參考資料。
7 個優秀 PHP OO 習慣包括:
保持謙虛
做個好鄰居。
避免看到美杜莎。
利用最弱的鏈接。
您是橡皮;我是膠水。
限制傳播。
考慮使用模式。
保持謙虛
保持謙虛指避免在類實現和函數實現中暴露自己。隱藏您的信息是一項基本習慣。如果不能養成隱藏實現細節的習慣,那么將很難養成任何其他習慣。信息隱藏也稱為封裝。
直接公開公共字段是一個壞習慣的原因有很多,最重要的原因是讓您在實現更改中沒有應有的選擇。使用 OO 概念隔離更改,而封裝在確保所作更改在本質上不是病毒性(viral)更改方面扮演不可或缺的角色。病毒性 更改是開始時很小的更改 ― 如將保存三個元素的數組更改為一個只包含兩個元素的數組。突然,您發現需要更改越來越多的代碼以適應本應十分微不足道的更改。
開始隱藏信息的一種簡單方法是保持字段私有并且用公共訪問方法公開這些字段,就像家中的窗戶一樣。并沒有讓整面墻都朝外部開放,而只打開一兩扇窗戶(我將在 “好習慣:使用公共訪問方法” 中介紹訪問方法的更多信息)。
除了允許您的實現隱藏在更改之后外,使用公共訪問方法而非直接公開字段將允許您在基本實現的基礎上進行構建,方法為覆蓋訪問方法的實現以執行略微不同于父方法的行為。它還允許您構建一個抽象實現,從而使實際實現委托給覆蓋基本實現的類。
壞習慣:公開公共字段
在清單 1 的壞代碼示例中,Person 對象的字段被直接公開為公共字段而非使用訪問方法。雖然此行為十分誘人,尤其對于輕量級數據對象來說更是如此,但是它將對您提出限制。
清單 1. 公開公共字段的壞習慣
如果對象有任何更改,則使用該對象的所有代碼也都需要更改。例如,如果某人的教名、姓氏和其他名字被封裝到 PersonName 對象中,則需要修改所有代碼以適應更改。
新聞熱點
疑難解答