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