[英]Object Oriented Naming Conventions
使用附加到對象的方法構建代碼的名稱是什么?
例如:
" ... ".trim
或者
obj.method()
起初,許多人會爭辯說這是面向 Object 的,但php
是面向 Object 的(以及部分trim("... ")
,但它的語法完全不同。
人們不斷建議 PHP 是“面向對象”而庫是“面向對象”,然而 PHP 庫的代碼通常由大量的 static 類構成。
例如紅豆:
這不遵循obj.method
語法,但據說是面向 Object 的。 PHP 的 object 方向是否具有誤導性,或者obj.method()
編碼風格是否有更好的名稱。
PHP 兩者都可以。 您可以編寫面向 object 的代碼,也可以編寫程序代碼。 過程代碼更容易理解和編寫,大多數 PHP 程序員並不真正了解 OOP,所以他們編寫,我稱之為偽裝成 OOP 的過程代碼。 這包括諸如 static 方法和單例之類的東西。
PHP 的許多核心功能都是 C 的遺產,所以如果它不遵循 OOP 約定,請不要感到驚訝。
重要的是,在對象上調用方法確實遵循 OOP 約定。
PHP 中的字符串不被視為對象,而是標量值。 因此,除非首先將標量字符串文字轉換為 object,否則語法"..."->trim()
無法工作。
有一個關於自動裝箱(將標量值自動轉換為對象)的公開提議。 這將允許通常的 object 面向語法。 然而,自動裝箱確實有一點性能損失。 在這里查看更多:
對於 RedBeanPHP,我使用 static 方法作為外觀。 這比純粹的 OO 代碼更加用戶友好。 您不必了解 RedBeanPHP 的所有內部結構就可以使用它(還有一種 OO 方式來使用 lib)。 在我看來,RedBeanPHP 真的是面向 object 的; 在門面后面,它使用 inheritance、接口、多態性和適配器、工廠、觀察者等模式。
另外,我相信 OOP 更像是一種思維方式,而不僅僅是一種語法。 例如,您也可以使用結構和 function 指針或像 GTK 那樣來制作面向 object 的系統。 OOP 語言中的功能只是為了方便。 此外,由於 PHP 是一種動態語言(與 static 類型相比),它不必依賴類型,它可以只掃描對象以獲得所需的行為。 在我看來,這是一件好事,因為它更靈活,更易於維護,比如 Java 中的深層 class 層次結構。 我曾經是一個 OO 純粹主義者,但我最近接受了 OOP 實用主義; 只需使用兩全其美。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.