PTT推薦

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

看板Soft_Job標題Re: [請益] 比物件導向更先進的程式設計思想?作者
csfgsj
(流水貫通)
時間推噓 5 推:12 噓:7 →:51

※ 引述《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也是一團亂




--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.229.0.133 (臺灣)
PTT 網址

sunsamy10/18 10:02有可能,但有更多的例子解釋為何是亂源嗎?

如果不排斥看英文 網路上資料很多啦! Ex. 搜尋 "anti object oriented programming"

sunsamy10/18 10:07很有趣的觀點, 的確以前沒注意過,不過較像c++語法的問題

sunsamy10/18 10:08OOP的觀念本身沒問題

Bjarne Stroustrup (C++ 創始者) 這老傢伙說C過時了

https://www.youtube.com/watch?v=KlPC3O1DVcg

看看底下的留言者,如何圍剿他

BBSealion10/18 11:32說亂源太超過了,就是不同設計法各有優缺點而已,強制

BBSealion10/18 11:33OOP 的語言確實造成了一些麻煩,但放開一些限制,引入

BBSealion10/18 11:33其他設計法的好處,截長補短,OOP本身還是很有價值

BBSealion10/18 11:34javascript 的玩法一樣生出了一堆討人厭的鬼東西

aidansky098910/18 11:59封裝的思想很好,代碼復用原則上是對的

ripple012910/18 12:52JS的亂不是paradigm的問題,是一堆莫名奇妙設計不良

ripple012910/18 12:52的東西還轉化成了知識,譬如說hoisting,this。這樣

ripple012910/18 12:52的設計有好處就算了問題是根本沒有,不如噴錯出來給

ripple012910/18 12:52我修正。

tsao121110/18 12:59有訓練過的工程師也不會用到hoisting

全班考太爛,教授將分數開根號乘以十的概念

longlyeagle10/18 13:40JS可OOP可FP 反正怎麼寫都會動 輸出是什麼就不知道了

老實說前端的東西 有需要搞得這麼複雜嗎?

EricTCartman10/18 14:07client端也有複雜的

有技術價值的東西,放在明碼上,不是一下子就被切走了嗎?

jej10/18 15:27我覺得樓主要去看看ES6之後了 你說的JavaScript是很久之前的

jej10/18 15:27用狗哥查JavaScript封裝 繼承 多型 會有東西喔

daddy2910/18 15:28多看點書

PO文的內容就是從書上來的

art110/18 15:32如果真的對物件導向很不滿,怎麼會連用自己的話說出來都辦不

art110/18 15:32到?只會叫別人 google,你自己的想法在哪裡?

請參考前面的發文,我已經寫很多了。 提供額外的參考,這樣也不行。就是要找碴乎

jej10/18 15:34而且 js的定位並非全然都是前端喔 這樣說NodeJs支持者會哭

jej10/18 15:49至於程式有大便味 就是有那種喜歡寫奇門遁甲if else的人

jej10/18 15:49就是看誰衰 誰承受奇門遁甲阿 誰吃屎阿

jej10/18 15:58不過回歸這話題 有沒有比oo先進 這很難說

jej10/18 15:58但本肥很喜歡祖克柏 和比爾蓋茲的想法

jej10/18 15:58覺得現行的語言太麻煩 自己幹出來一套語言

jej10/18 15:58本肥覺得這才是這系列文最終想要的結果

前端語言要自幹,還要看瀏覽器買不買單,沒那麼大的本事 後端我用C就可以了,Web Server 還可以自己改(httpd) 不過現在沒有靠 Web 營生,所以沒有這個煩惱。 做純 Web 太血汗,好吃懶做的人早跑了

thund10/18 16:47JS的封裝繼承多型也只是語法糖 本質還是Prototype-base啊

x246libra10/18 16:57用你的關鍵字查詢 看到一個論點是OOP的共享狀態是雷區

x246libra10/18 16:57無論這個共享狀態是全域變數 或是依賴注入的封裝依賴

x246libra10/18 16:58但我好奇 類似這種全域變數 比如說連線池 是一定要的吧

x246libra10/18 16:59如果不依賴這個共享的連線池 是要每次都重建?

x246libra10/18 17:00fp的語言 會怎麼使用連線池呢? 閉包? 跟封裝差不多吧

x246libra10/18 17:00還是說 完全不使用連線池?

不是很確定你問的問題是什麼? 回了怕變成雞同鴨講

askaleroux10/18 18:13JS本身就是垃圾語言 還好意思批評其他性質

strlen10/18 18:21什麼不推 推JS這個垃圾 我越來越覺得你在反串

strlen10/18 18:22JS沒有class 還在新版特別做了一個語法糖 你來說說為何

strlen10/18 18:22ECMA為何要舔OOP的懶趴好了 XDDD

因為市場需求,商人只管滿足需求,而不管有這種需求的人是不是獃子

strlen10/18 18:24樓上不要講ES6了啦 老骨頭根本跟不上時代了還活在過去

至少是美好的過去

newhandfun10/18 18:26樓上這圖.....XD

strlen10/18 18:26然後阿 就本質來講啦 所有的程式包括C 本來就都是語法糖阿

strlen10/18 18:26阿不然你要回去看組語或機器碼喔?XDDDDDDD

Masakiad10/18 19:26這篇言論的確像15年前的人講出來的 「前端不用這麼複雜

Masakiad10/18 19:26」、「JS沒有OOP」這些都不是現代JS語言應用實務上的狀

Masakiad10/18 19:26

表示未來的 JavaScript code 要開始 Spaghetti 化了 殘念

lturtsamuel10/18 22:17實作是prototype base是一回事 class跟extend都出來

lturtsamuel10/18 22:17這麼久了不用當它空氣吧

不把它當空氣,就要開始寫 Spaghetti Code了

b8504031210/19 01:40我看過前端寫REACT用一堆 if else 來控制畫面顯示

b8504031210/19 01:40看到只覺得 wtf

shooter55510/19 12:34ES6嘎?

strlen10/19 13:29你什麼時候產生了沒有OOP就不會有Spaghetti Code的錯覺XD

我沒有這樣說過呀! 是你誤會了

as3038543810/19 14:13這篇看起來是久沒接觸前端的人憑著信仰發的文

as3038543810/19 14:15稍有要求的公司早就都上ts了, 也不會用JS的奇怪特性

看一下這個網站,JavaScript 跟 TypeScript 的 Rank

https://www.tiobe.com/tiobe-index/

https://reurl.cc/avMnOY

這篇文章說: There are no plans to support TypeScript natively in the browsers. Chrome did some experiment, but later cancelled support. (目前沒有任何的瀏覽器計畫對 TypeScript 提供天生的支援(不用加外掛)) (Chrome 曾經作過一些測試,後來取消了對它的支援) 「稍有要求的公司早就都上ts了」<-- 這是你的信仰,還是你在作夢

as3038543810/19 16:04不要在那邊偷渡概念...瀏覽器不支援是另一個議題

來自同一篇文章 This is particularly important to note if you’re still in the prototyping phase. If so, don’t waste your time with TypeScript. JavaScript is so much more flexible. (不要浪費時間在 TypeScript 上面)

as3038543810/19 16:04三大前端框架Angular本來就ts-based

越來越離譜了

as3038543810/19 16:05另外兩個也都往ts靠攏, ts近年的趨勢網路上一堆文章

as3038543810/19 16:06中型以上的frontend專案還用JS這種垃圾叫做自找麻煩

感覺就是微軟的大外宣

strlen10/19 17:51那既然都會義大利麵 用不用OOP有差嗎 關鍵不就在人?

這是機率的問題,用OO的人,90%都會製造糞code 造飛機~ 造飛機~ 來到青草地~ 造糞機~ 造糞機~ 就是O.O.P.~

strlen10/19 17:54反正不合你意就是大外宣 就是炒作 就是阿共仔的陰毛

阿共的陰毛不清楚啦,MS的陰毛全世界都知道

as3038543810/19 18:36你看文章都不看上下文的嗎...

as3038543810/19 18:36if you’re still in the prototyping phase.

不用OO,那句話有什麼問題

as3038543810/19 18:39該文作者看起來就是ts派的

建議你把整篇文章仔細看一遍,它裡面還提到 Javascript is more flexible. ~~~ If Typescript is Windows, Javascript is Linux. I tried to refactor some of my hobby projects to TypeScript but it did not worth the effort.

as3038543810/19 19:19熊熊發現這位不就是之前大戰OOP的大師嗎XD

stopcrying10/19 21:16js 是 prototype-based OO language 吧

stopcrying10/19 21:17他的好朋友還有 Lua 和 Self ?

您高興就好

Nitricacid10/19 22:53JS 跟 TS 的發言真的是原始人....XD

所以你很先進?要不要掏出來看看,不要只會說別人的雞雞小

CoNsTaR10/20 02:57計畫什麼時候進桶啊?

建議你去當版主,把所有看不順眼的都桶一桶

※ 編輯: csfgsj (218.32.249.24 臺灣), 10/20/2020 10:18:49

strlen10/20 13:31你有數據顯示寫OOP的比較容易寫出糞code?

strlen10/20 13:31我倒覺得根本差不多