幽默:假裝從未發生過OOP? - johndcook

banq發表於2020-05-16

我最近遇到一個人,他說,擺脫物件導向程式設計(OOP)的方式是回到簡單地告訴計算機要做什麼,就像OOP從未發生過。我認為這不是一個好主意,我也不認為這是可能的。
物件導向的程式設計(儘管後來有過之而無不及)是軟體工程領域的一大進步。它使開發比以前更大的程式成為可能,也許比原來大10倍。有人可能會反駁說,由於OOP的所有開銷,程式必須大10倍,但事實並非如此。OOP確實增加了一些開銷,並且隨著時間的推移,開銷的數量隨著工具和框架變得更加複雜而增加,但是OOP使得編寫以前無法編寫的程式成為可能。
OOP為程式設計師提供了一種組織程式碼的方法。根據問題的不同,它可能不是最好的方法,但是超越OOP的方法是用另一門學科來代替它(而不是隻是否定它但無法替代它)。而且我想象大多數學習過然後拒絕OOP的人都會這樣做,無論他們是否意識到。也許他們保留了在OOP的背景下學到的一些組織模式。
雖然我不經常編寫類,但是我經常使用來自庫的類。有時,這些物件看起來似乎比裸函式更好,但是我想如果沒有將函式包裝在物件中的話,相同的庫將更難使用。
OOP有許多組織程式碼的替代方法。我通常喜歡函數語言程式設計,但是根據我的經驗,當您嘗試將純度提高到100%時,曲棍球運動曲線會有所變化。詹姆斯·海牙說得很好:

100%純函數語言程式設計不起作用。甚至98%的純函數語言程式設計也不起作用。但是,如果將函式純淨度與1980年代BASIC式命令式凌亂之間的進行平衡,也就是降低一些等級(例如達到85%),那麼它確實起作用。您將獲得函數語言程式設計的所有優勢,但是卻無需付出極大的精力和不可維護性,而這種努力和不可維護性會隨著您越來越接近完美的純淨而增加。
用純函式程式碼開發系統的大部分是一種可能,也是一個好主意。但是有人必須寫出與外界互動的混亂部分。(這部分使用OO封裝能降低純函式的混亂和複雜性)

相關文章