Re: [請益] 比物件導向更先進的程式設計思想?

作者: wulouise (在線上!=在電腦前)   2020-10-18 16:15:30
在討論oop fp 或任何概念之前
需要討論的是你的使用情境(context)
沒有context就只是在討論信仰
一開始沒有討論context,所以後面討論一定是到處互打,大家都覺得自己對
所以回這篇文的時候麻煩先描述想討論的context
為什麼需要設計概念?
通常不外乎兩件事情
1. 降低維護成本
2. 降低開發成本
通常的情境你需要的是1+2的最小值
但是很多情景有人只看2讓1一直增加
假如是demo,只需要2,不然通常要1
然後再來看兩個概念之間的差異
Functional programming
用什麼方式降低開發與維護成本
1. Avoid state
2. Using immutable data.
所以維護成本其實不容易爆炸,因為你的unit test就是規格的全部
reuse 就是拿這個function reuse.
而且理解難度相對低
Object oriented programming
採用以下方式降低開發維護成本
1. SOLID
2. Design Pattern
如果遇到必要的複雜設計 design patter可以降低溝通成本 (通常會增加維護成本)
3. Inheritance
4. Polymorphism
5. KISS
6. [Insert any you want to add]
OOP最大的問題就是他太容易變得很複雜
不管是高手寫得或是新手寫得,複雜度都可以不小心膨脹很多
各種principles & patterns 更是火上加油
造成各種over generalized design
不小心就被過去的歷史backfired
舉個最常聽到的,有誰用global singleton然後可以很好地refactor?
有好解法麻煩分享一下
所以OOP最重要的原則我覺得是KISS (不論context)
Keep it stupid simple
啊對,KISS是我的信仰,所以不開放回文戰,不用浪費各位時間
FP跟OOP不是互斥關係
兩者在特定context都有表現好的地方
選擇適合的方式才是重點
作者: jej (晃奶大馬桶)   2020-10-18 16:21:00
DevOps兩項都要注重 很難權衡取其一
作者: dream1124 (全新開始)   2020-10-18 19:31:00
推不過我覺得FP並非沒有你批評OOP過度複雜的問題現在前端給我的感覺是不管是否真的複雜都在用狀態框架是否真的好維護還是跟設計者的功力密切相關
作者: es8603 (緋色之翼)   2020-10-18 21:15:00
推這篇
作者: strlen (strlen)   2020-10-18 21:32:00
重點根本不在模式 重點在人 就算FB 也是能寫到超難懂
作者: dream1124 (全新開始)   2020-10-20 09:52:00
對啦,本就該並存,狀態用OOP管,程序用FP管
作者: electgpro (Ray(甫))   2020-10-21 07:53:00
寫 pure FP 也可以管理狀態呀~
作者: qscesz1456 (soloud)   2020-10-22 19:19:00
寫到後來發現真的keep simple就好
作者: jej (晃奶大馬桶)   2020-10-22 19:21:00
對stupid就交給別人了
作者: MangoTW (不在線上)   2020-10-23 21:46:00
推這篇 沒有一樣作法可以打全部的 說有的真的是戰信仰

Links booklink

Contact Us: admin [ a t ] ucptt.com