Re: [請益] 比物件導向更先進的程式設計思想?
在討論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.
--
等等,我是不知道妳是看了什麼神槍手的故事,可是為什麼要拿我當靶 (′Д‵)
什麼!是黃忠和后羿的故事?他們拿的不是銃,是弓!
長門,妳手上拿著蘋果跟繩子是作什麼?今天晚餐不是關東煮是烤乳豬嗎?
連爸爸都沒弄痛過我,可不可以不要綁這麼緊,好歹鬆一點讓我有空間逃吧,古泉。
好,我認了,要射就射吧,可是請聽一下在我死前的最後一個願望。
不 要 拿 霰 彈 來.....噗滋(腦漿聲) 摘自「阿虛的最後一餐」
--
DevOps兩項都要注重 很難權衡取其一
推
不過我覺得FP並非沒有你批評OOP過度複雜的問題
現在前端給我的感覺是不管是否真的複雜都在用狀態框架
是否真的好維護還是跟設計者的功力密切相關
FP不複雜的前提是他沒有state 但是正常的設計通常有state,然後就出現長得像FP的東西 每次執行結果都不一樣XD
推這篇
重點根本不在模式 重點在人 就算FB 也是能寫到超難懂
FP跟OOP本來就該是並存的,只是OOP比較容易寫爛XD
※ 編輯: wulouise (114.44.72.189 臺灣), 10/19/2020 20:48:52「比較容易」寫爛??你太小看那些工程師了XDDDDDD
對啦,本就該並存,狀態用OOP管,程序用FP管
寫 pure FP 也可以管理狀態呀~
寫到後來發現真的keep simple就好
對stupid就交給別人了
推這篇 沒有一樣作法可以打全部的 說有的真的是戰信仰
2
我個人主觀且偏見的覺得 OOP 不是聖杯,它只能管理一些些的複雜度,它雖好用但又沒那麼好用,它可以很容易跟其他技術結合在一起,所以起手式走oop 不見得不好,但也不用太過度期待用了能上天堂之類的 oop 就只是個工具,就像 solid 是個 guide(我也喜歡 solid,但現實世界總是不那麼美好),更別說是板上常見的 design pattern,我相信我們能從這些東西上面是可以學到一些東西,但也不用過度美化 如果真的要把程式寫好,我覺得練習寫能大量組合,無狀態,可驗證,又可高度抽象化的producedure,stateless,pipeline,wishful thinking programming 的方式會比較好,我反倒覺得這個聖杯存在很久了,只是很少人注意到 ----- Sent from JPTT on my Asus ASUS_I01WD.3
喜歡換一個思考模式嗎?歡迎進入 FP 1. compose 是 FP 語言中的基石 (O) 2. stateless FP 語言原則上沒變數概念,等號兩邊是等價的 (O) 3. 可驗證/高度抽象化,FP 的 type system 往往比 oo 系列的表達力更強 (O) ---6
OOP沒什麼不好啊 沒有OOP我們廣大的碼農們怎麼活下去 沒有OOP現在的軟體能發展成這樣嗎 每樣工具在其時代背景都有它的貢獻 沒有工具是完美的啊5
JavaScript 是一個基於原型(Prototype-based)的程式語言 在本質上很難將它歸類為程序導向語言,或是物件導向語言 類別: JavaScript 中沒有類別(Class)的概念,但是有物件(object)的概念 而這個物件概念的物件,則是以GUI的 Widget為主X
國外反OOP的人不在少數 OOP 是萬惡之源 OOP is the Root of All Evil - Jeff Ward OOP 是爛東西8
物件導向其實是很偉大的發明 不知道酸民有沒有注意到--- 建築的預鑄工法, 其實也是物件導向 先把牆, 梁柱預鑄好, 搬到工地組合起來就好 所以現在蓋房子都超快的8
阿 是不是什麼王X歸來、邁向X手之路、拉近和X神之路、最強入門邁向X手之路之類的書?還是有附插畫的那種? 或者某些業者或教學單位新花樣, 賦予新名詞之類的,例如: 後X情時代、XG製造、智X製造、X捷開發、X石開發、X布開發、X端工程師、X個月轉職、X經驗工程師。 我覺得我地圖砲開太大XD,「完全取代」根本比不上「相容舊版」來的有用,薪水也不會比較多。9
依照目前看CodeReview 大部分人寫程式的方式 其實都披著OOP的皮 寫不是OOP的程式 甚至還看過很愛嘴別人的主管3
幾個迷思 很多人會講C沒有OOP 實際上C有 OOP是一種paradigm 本質上還是工程師的抽象化能力 有OOP思想的人去寫C 就會有OOP的味道 腦袋裝義大利麵的寫C++還是Java C# Swift 出來都是義大利麵5
近 : 幾十年來,從來沒有比物件導向實現更先進的程式設計實現在新程式語言中全面取代物 件 : 導向思想。 : 上面是某程式語言教學書看到的
38
Re: [討論] 怎樣算是一個合格的junior cpp programme個人淺見,這點不見得是必要的,template 的 code 常常不好讀不好除錯 正確使用能寫出高彈性高效能的程式,但用過多維護跟閱讀起來會很痛苦 即便不用 template,日常大多數的事情都還是可以完成的, 如果是多人一起維護程式,有時為了提升可讀性,反而會避免太炫麗的 template 技巧 新人的話推薦不妨投資點時間,學習如何改善可讀性和與別人協作20
Re: [分享] 用一個簡單的數學公式來幫忙設計OOP類別先講結論: 我反對原文的結論「OOP易學難精」 就我個人到現在的感受是「難學易精」 為什麼呢? 以下分享個人看法19
[請益] 適合入門functional programming 的教學如題,剛到公司報到就發現老闆是functional programming 的愛好者,對案子也會要求盡 量用fp的方式來寫 但我跟其他同期報到的新人從來沒碰過,每天都會聽到一堆新名詞跟新做法,很擔心以後跟 不上,所以想趁年假惡補一下 請問有沒有推薦適合新手的fp教學,文章、書、影片都可以,謝謝大家7
Re: [討論] 所謂的開發強者是怎麼樣子的?我以前在漂亮國工作的時候 有遇過一個美國白人大神 CMU畢業的 在IC design公司寫軟體 簡直屌打一票人