不要進行無謂的OOP與FP爭論 - Mathias Verraes

banq發表於2019-07-24
https://twitter.com/mathiasverraes/status/1153615691397943297
我希望我們無需爭論OOP與FP,而應該開始辯論個人正規化。不可變性,封裝,全域性狀態,單一賦值,actor模型,純函式,型別系統中的IO,繼承,組合......所有這些在OOP或FP中都是完全可能的。
有些更好,有些更糟糕,有些高度依賴於背景,讓我們想出來,而不是像OOP和FP一樣抨擊傘術語。並且可能還有更多的範例需要發現。
Haskell中,您可以為一個模組選擇不匯出型別建構函式,只匯出在資料結構上執行的智慧建構函式和操作函式。聽起來很接近封裝
IO: 你能使用Ports&Adapters模式,遷移你的IO到系統邊緣,沒有理由不移植到型別系統,也沒有理由讓其成為FP語言的專利。
Lambdas:不再是FP獨有的。PHP有一個功能,您可以使用__invoke將物件基本上轉換為lambda。您可以使用它來做一些讓人想起Reader Monad或Writer Monad的事情。不完全相同但具有相似的語義。
我的假設是FP的許多支持者都是專門從事不良OOP系統和良好FP系統工作的人,但從來沒有在良好的OOP和糟糕的FP系統中工作過。
遺產通常是糟糕OOP的典型代表。透過將其替換為“組合”,您可以更好地實現任何繼承。但是我們可以透過討論何時何地不使用繼承來啟發討論來改進討論,而不是完全解僱它。

相關文章