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

作者: csfgsj (切割對半)   2020-10-18 09:52:46
※ 引述《ripple0129 (perry tsai)》之銘言:
: 也不是說轉換能馬上換掉的啊
: 真要說馬上能換就換掉的
: 我第一個就先推Javascript
: 問題就是換不掉啊
JavaScript 是一個基於原型(Prototype-based)的程式語言
在本質上很難將它歸類為程序導向語言,或是物件導向語言
類別:
JavaScript 中沒有類別(Class)的概念,但是有物件(object)的概念
而這個物件概念的物件,則是以GUI的 Widget為主
Widget 具有屬性及操作(事件反應)函式,兩者綁在Widget上是合乎操作的抽象習慣的
封裝:
JavaScript 中的物件沒有封裝的概念
繼承:
JavaScript 的物件沒有繼承(Inheritance)的特性
多形:
JavaScript 的物件沒有多型(Polymorphism)的概念
命名空間:
JavaScript 沒有命名空間的概念
以上這些典型的OOP亂源都沒有了,JavaScript寫出來的Code
自然也就不會像一般的OOP那樣臭
雖然有人說,還是可以用JavaScript寫出有OOP味的程式
但基本上沒有什麼人這樣做,真的這樣做,Code也是一團亂
作者: sunsamy   2020-10-18 10:02:00
有可能,但有更多的例子解釋為何是亂源嗎?很有趣的觀點, 的確以前沒注意過,不過較像c++語法的問題OOP的觀念本身沒問題
作者: BBSealion (海獅)   2020-10-18 11:32:00
說亂源太超過了,就是不同設計法各有優缺點而已,強制OOP 的語言確實造成了一些麻煩,但放開一些限制,引入其他設計法的好處,截長補短,OOP本身還是很有價值javascript 的玩法一樣生出了一堆討人厭的鬼東西
作者: aidansky0989 (alta)   2020-10-18 11:59:00
封裝的思想很好,代碼復用原則上是對的
作者: ripple0129 (perry tsai)   2020-10-18 12:52:00
JS的亂不是paradigm的問題,是一堆莫名奇妙設計不良的東西還轉化成了知識,譬如說hoisting,this。這樣的設計有好處就算了問題是根本沒有,不如噴錯出來給我修正。
作者: tsao1211 (Sunday)   2020-10-18 12:59:00
有訓練過的工程師也不會用到hoisting
作者: longlyeagle (長鷹寶寶實驗室)   2020-10-18 13:40:00
JS可OOP可FP 反正怎麼寫都會動 輸出是什麼就不知道了
作者: EricTCartman (阿ㄆㄧㄚˇ)   2020-10-18 14:07:00
client端也有複雜的
作者: jej (晃奶大馬桶)   2020-10-18 15:27:00
我覺得樓主要去看看ES6之後了 你說的JavaScript是很久之前的用狗哥查JavaScript封裝 繼承 多型 會有東西喔
作者: daddy29 (願上帝與你同在)   2020-10-18 15:28:00
多看點書
作者: art1 (人,原來不是人)   2020-10-18 15:32:00
如果真的對物件導向很不滿,怎麼會連用自己的話說出來都辦不到?只會叫別人 google,你自己的想法在哪裡?
作者: jej (晃奶大馬桶)   2020-10-18 15:34:00
而且 js的定位並非全然都是前端喔 這樣說NodeJs支持者會哭至於程式有大便味 就是有那種喜歡寫奇門遁甲if else的人就是看誰衰 誰承受奇門遁甲阿 誰吃屎阿不過回歸這話題 有沒有比oo先進 這很難說但本肥很喜歡祖克柏 和比爾蓋茲的想法覺得現行的語言太麻煩 自己幹出來一套語言本肥覺得這才是這系列文最終想要的結果
作者: thund (天下御免)   2020-10-18 16:47:00
JS的封裝繼承多型也只是語法糖 本質還是Prototype-base啊
作者: x246libra (楓)   2020-10-18 16:57:00
用你的關鍵字查詢 看到一個論點是OOP的共享狀態是雷區無論這個共享狀態是全域變數 或是依賴注入的封裝依賴但我好奇 類似這種全域變數 比如說連線池 是一定要的吧如果不依賴這個共享的連線池 是要每次都重建?fp的語言 會怎麼使用連線池呢? 閉包? 跟封裝差不多吧還是說 完全不使用連線池?
作者: askaleroux (FalconTW)   2020-10-18 18:13:00
JS本身就是垃圾語言 還好意思批評其他性質
作者: strlen (strlen)   2020-10-18 18:20:00
https://pbs.twimg.com/media/Dg99SCEW4AAs8Nc?format=jpg什麼不推 推JS這個垃圾 我越來越覺得你在反串JS沒有class 還在新版特別做了一個語法糖 你來說說為何ECMA為何要舔OOP的懶趴好了 XDDD樓上不要講ES6了啦 老骨頭根本跟不上時代了還活在過去
作者: newhandfun (新手方)   2020-10-18 18:26:00
樓上這圖.....XD
作者: strlen (strlen)   2020-10-18 18:26:00
然後阿 就本質來講啦 所有的程式包括C 本來就都是語法糖阿阿不然你要回去看組語或機器碼喔?XDDDDDDD
作者: Masakiad (Masaki)   2020-10-18 19:26:00
這篇言論的確像15年前的人講出來的 「前端不用這麼複雜」、「JS沒有OOP」這些都不是現代JS語言應用實務上的狀況
作者: lturtsamuel (港都都教授)   2020-10-18 22:17:00
實作是prototype base是一回事 class跟extend都出來這麼久了不用當它空氣吧
作者: b85040312 (萬年newman)   2020-10-19 01:40:00
我看過前端寫REACT用一堆 if else 來控制畫面顯示看到只覺得 wtf
作者: shooter555 (shooter)   2020-10-19 12:34:00
ES6嘎?
作者: strlen (strlen)   2020-10-19 13:29:00
你什麼時候產生了沒有OOP就不會有Spaghetti Code的錯覺XD
作者: as30385438 (LCT)   2020-10-19 14:13:00
這篇看起來是久沒接觸前端的人憑著信仰發的文稍有要求的公司早就都上ts了, 也不會用JS的奇怪特性
作者: strlen (strlen)   2020-10-19 17:51:00
那既然都會義大利麵 用不用OOP有差嗎 關鍵不就在人?反正不合你意就是大外宣 就是炒作 就是阿共仔的陰毛
作者: as30385438 (LCT)   2020-10-19 18:36:00
你看文章都不看上下文的嗎...if you’re still in the prototyping phase.該文作者看起來就是ts派的熊熊發現這位不就是之前大戰OOP的大師嗎XD
作者: stopcrying (賣考)   2020-10-19 21:16:00
js 是 prototype-based OO language 吧他的好朋友還有 Lua 和 Self ?
作者: Nitricacid (硝酸酸)   2020-10-19 22:53:00
JS 跟 TS 的發言真的是原始人....XD
作者: CoNsTaR ((const *))   2020-10-20 02:57:00
計畫什麼時候進桶啊?
作者: strlen (strlen)   2020-10-20 13:31:00
你有數據顯示寫OOP的比較容易寫出糞code?我倒覺得根本差不多

Links booklink

Contact Us: admin [ a t ] ucptt.com