加入收藏 | 设为首页 | 会员中心 | 我要投稿 鹰潭站长网 (https://www.0701zz.cn/)- 图像处理、低代码、云通信、数据工具、物联设备!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

科研员开发智能桌布织物

发布时间:2021-02-05 14:29:36 所属栏目:传媒 来源:互联网
导读:EM:无论何种代码复用技术(类继承,或是原型组合,或是其它),目标任务都是生成新的对象实例,实现软件功能的开发。 在 JavaScript中,原型继承有以下几种应用表现: 原型链(concatenative inheritance), 原型委托(prototype delegation), 功能继承

EM:无论何种代码复用技术(类继承,或是原型组合,或是其它),目标任务都是生成新的对象实例,实现软件功能的开发。

在 JavaScript中,原型继承有以下几种应用表现:

  • 原型链(concatenative inheritance),
  • 原型委托(prototype delegation),
  • 功能继承/闭包(functional inheritance),
  • 对象构成(object composition);

第四,函数式编程(FP)和面向对象编程(OO)各自优点和不足是什么?

FP和OOP作为完成编程这个「任务」的「工具」,有各自的适用和优点与不足。

OOP的优点

直观,对象由数据和方法组成的概念很容易理解,也容易解释方法调用的意义。OOP倾向于使用命令式风格,而不是声明式风格,命令式风格读起来像是一组供计算机遵循的直接指令,很形象。

OOP的缺点

OOP通常依赖于共享状态。对象和行为通常被绑定在同一个实体上,可以被任意数量的顺序不确定的函数随机访问,这可能会导致不希望的行为,比如竞态事件(race conditions)。

FP的优点

使用 纯函数作为功能单元,程序员可以避免任何共享状态或副作用 [em] ,从而消除多个功能竞争相同资源所导致的bug。与OOP相比,FP的大功能的复合方式,例如所谓的无参数风格(point-free ),大大简化复杂功能的组合方式,和改善代码可重用方式。

EM:使用和不使用共享状态都是技术,重点是那个「功能的实现」的任务;就是为什么一定要使用中间状态?「纯函数」和「类对象」是两种编程范式最大「工具」区别。

另外,FP 倾向于 声明式和符号指代(denotational)的功能命名风格 [em] ,FP不倾向通过详细说明功能操作的步骤,而是关注「功能要做什么」。这为重构和性能优化留下了巨大的空间,它甚至允许你用更高效的算法替换整个旧算法,而代码更改很少(例如,memoize,或者用惰性求值来代替eager 求值)。

EM:就是更倾向使用名词, 而不是动词表达「功能」

EM:两种工具思想区别在于,FP是关注功能的形式和逻辑关系,OOP关于功能实现的数据的处理

使用纯函数实现的计算功能也很容易移植到多处理器,或分布式计算集群环境上,而不用担心线程资源冲突、竞态事件(race conditions)等。

FP的缺点

过度使用FP风格的代码(例如大量使用无参数式风格分割和组合 大功能 )可能会降低代码可读性,因为生成的代码通常很抽象,它简洁且不够具体。

与函数式编程相比,习惯OOP和命令式编程的人会更多,更深厚,因此,即使是函数式编程中的常见习惯用法也会让新团队成员感到困惑。

另外,FP的学习曲线要比OOP陡峭得多,因为OOP的广泛流行使得OOP的语言和学习材料变得更加对话化,而FP的语言则更加学术化和形式化。

总的来说,OOP使用共享状态「 实现复合功 」能是有害的,虽然它很直观;高度使用OOP的codebase比较“顽固”和脆弱,难改又错误百出;FP除了没有OOP的这些不足外,程序比较易读易维护,只是适应FP风格需要一些时间。

第五,在什么场景下最适合使用 类继承?

几乎没有适用的场景, 类继承能免则免,除非只有一层的继承;

第六,在什么场景下最适合使用 原型继承?

在JS中,当需要复用代码时都几乎可以使用原型继承,当然包括不适用函数式复用(FP也提供了复用机制)的时候。JS中有三类的原型继承:

  • 第一,委托(Delegation),例如使用原型链;
  • 第二,接合(Concatenative),例如mixins, `Object.assign()`;
  • 第三,创建新(Functional),例如闭包;

每一类 原型继承都有各自适用场景,不过,它们都归结为 构成(composition)复用,是一种 has-a or uses-a or can-do 的关系,与类继承的 is-a关系相反。


(编辑:鹰潭站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读