不要進行無謂的OOP與FP爭論 - Mathias Verraes
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的典型代表。透過將其替換為“組合”,您可以更好地實現任何繼承。但是我們可以透過討論何時何地不使用繼承來啟發討論來改進討論,而不是完全解僱它。
我希望我們無需爭論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的典型代表。透過將其替換為“組合”,您可以更好地實現任何繼承。但是我們可以透過討論何時何地不使用繼承來啟發討論來改進討論,而不是完全解僱它。
相關文章
- 結合CYNEFIN框架對DDD真正的定位 - Mathias Verraes框架
- DDD聚合的再一次定義 - Mathias Verraes
- 領域建模的啟發,不同行業對模型的破壞力不同 - Mathias Verraes行業模型
- REST與GraphQL的爭論REST
- DDD設計中領域模型是否可以依賴第三方? - Mathias Verraes模型
- Mathias Verraes:軟體設計中,越小越好,粒度越細越好往往是一種壞建議
- 使用 chunkById 方法的時候請不要進行排序排序
- 使用tensorrt對ram++模型進行fp16精度加速指導模型
- FP-Growth演算法全解析:理論基礎與實戰指導演算法
- 創意設計師,請不要相信考證無用論!
- 謂詞下推:計算和儲存分開進行分析是低效的?
- 某東eid與fp獲取方法
- Teradata退了? 無所謂,GBASE會出手
- 執行計劃-4:謂詞的選擇時機與使用細節
- 幽默:容器派與無伺服器派的爭鬥伺服器
- 基於FP-Growth演算法進行資料集中頻繁項集挖掘演算法
- fp-match
- Epic VS 蘋果 Part 2:爭論焦點與Xbox的入場蘋果
- 事件溯源:是來自事件的狀態與作為狀態的事件? - verraes事件
- Java頻繁的進行字串拼接不要用 String! StringBuffer是最佳選擇!Java字串
- foreach迴圈中為什麼不要進行remove/add操作REM
- 併發王者課-黃金3:雨露均沾-不要讓你的執行緒在競爭中被“餓死”執行緒
- OOPOOP
- 騰訊入局,直播下半場進入無界之爭
- 疫情下的遊戲人:無所謂的、沉默的和遊離在外的遊戲
- 是否要做Code Review?與BAT資深架構師爭論之後的思考ViewBAT架構
- 大資料爭論:批處理與流處理的C位之戰大資料
- 一個無競爭的快取快取
- 智慧音響的“無限戰爭”
- 線上進行分庫分表中介軟體的平滑升級,正所謂藝高人膽大
- 論文:從第一原理匯出依賴型別 OOP型別OOP
- 開發人員,千萬不要去碰那該死的業務引數,無論什麼時候!
- 2019機器學習框架之爭:與Tensorflow競爭白熱化,進擊的PyTorch贏在哪裡?機器學習框架PyTorch
- 聊聊所謂的cookieCookie
- 關於Java的取時間方法的爭論Java
- vscode 無法進行 debug 除錯VSCode除錯
- 由軟體構造引申的OOP與POP的心得體會OOP
- 基於TRIZ理論進行專利挖掘