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

看板Soft_Job (軟體人)作者 (在線上!=在電腦前)時間3年前 (2020/10/18 16:15), 3年前編輯推噓5(508)
留言13則, 7人參與, 3年前最新討論串13/15 (看更多)
在討論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都有表現好的地方 選擇適合的方式才是重點 ----- Sent from JPTT on my Google Pixel 4. -- 等等,我是不知道妳是看了什麼神槍手的故事,可是為什麼要拿我當靶 (′Д‵) 什麼!是黃忠和后羿的故事?他們拿的不是銃,是弓! 長門,妳手上拿著蘋果跟繩子是作什麼?今天晚餐不是關東煮是烤乳豬嗎? 連爸爸都沒弄痛過我,可不可以不要綁這麼緊,好歹鬆一點讓我有空間逃吧,古泉。 好,我認了,要射就射吧,可是請聽一下在我死前的最後一個願望。 不 要 拿 霰 彈 來.....噗滋(腦漿聲) 摘自「阿虛的最後一餐」 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.220.193 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1603008934.A.569.html ※ 編輯: wulouise (223.136.220.193 臺灣), 10/18/2020 16:16:54

10/18 16:21, 3年前 , 1F
DevOps兩項都要注重 很難權衡取其一
10/18 16:21, 1F

10/18 19:31, 3年前 , 2F
10/18 19:31, 2F

10/18 19:53, 3年前 , 3F
不過我覺得FP並非沒有你批評OOP過度複雜的問題
10/18 19:53, 3F

10/18 19:54, 3年前 , 4F
現在前端給我的感覺是不管是否真的複雜都在用狀態框架
10/18 19:54, 4F

10/18 19:55, 3年前 , 5F
是否真的好維護還是跟設計者的功力密切相關
10/18 19:55, 5F
FP不複雜的前提是他沒有state 但是正常的設計通常有state,然後就出現長得像FP的東西 每次執行結果都不一樣XD

10/18 21:15, 3年前 , 6F
推這篇
10/18 21:15, 6F

10/18 21:32, 3年前 , 7F
重點根本不在模式 重點在人 就算FB 也是能寫到超難懂
10/18 21:32, 7F
FP跟OOP本來就該是並存的,只是OOP比較容易寫爛XD ※ 編輯: wulouise (114.44.72.189 臺灣), 10/19/2020 20:48:52

10/19 23:26, 3年前 , 8F
「比較容易」寫爛??你太小看那些工程師了XDDDDDD
10/19 23:26, 8F

10/20 09:52, 3年前 , 9F
對啦,本就該並存,狀態用OOP管,程序用FP管
10/20 09:52, 9F

10/21 07:53, 3年前 , 10F
寫 pure FP 也可以管理狀態呀~
10/21 07:53, 10F

10/22 19:19, 3年前 , 11F
寫到後來發現真的keep simple就好
10/22 19:19, 11F

10/22 19:21, 3年前 , 12F
對stupid就交給別人了
10/22 19:21, 12F

10/23 21:46, 3年前 , 13F
推這篇 沒有一樣作法可以打全部的 說有的真的是戰信仰
10/23 21:46, 13F
文章代碼(AID): #1VY_ccLf (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1VY_ccLf (Soft_Job)