Press "Enter" to skip to content

Tag: 函数式编程

如何使用偏函数技术提高代码的可读性

对刚接触JS的人来,「偏函数」是一个让人困惑的概念,其实「偏函数」指代的不是一个特殊功能的函数,而是 一种有目的函数式编程(功能编程),这个目的可概述为,将一个目标函数 Fo“偏化”(什么叫偏化,本文后面会讲),简化对Fo的调用(Fo功能的使用),从而提高代码维护质量。

与偏函数一样高度相关的,同样让新手困惑的是,柯里化函数。它们的相关在于,都是对一个目标函数Fo进行某种改造,只是改造的目的不同。

理解偏函数和柯里化函数的实质 需要很多基础,偏函数是柯里化函数的理解基础(例如参数application),而「高阶函数」是它们的基础,更基础的是「函数式编程」,当然还有一个终极的基础,「编程」是什么。

函数式编程 是一个很大的题目,不容易讲清楚;「编写高阶函数」是 函数式编程 的重要特征,同样高阶函数也需要很多解释。但是,我们可以从以他们为基础的应用技术——偏函数技术——的实例,比较具体的了解函数式编程的实质和意义。

关于偏函数技术的应用例子,我自己不写,略译此文《How to use partial application to improve your JavaScript code》作为引子。

有效评估JS开发者软实力的十条面试题

为了顺利的再进职场,最近一个月来都在做有目的训练,训练自己的实操能力(因为这是我的一个弱项——前端项目经验薄弱,加上在特长上,编码和分析更倾向后者),而不是任意的自由的学习。然而,在具体的学习主题上,除了参考和对比常规面试题,找出一些基础主题外,对什么是“最有价值”的学习主题,我没有指引。

其实我一真很相信自己的直觉,但是难免有盲区,和价值冲突,我不清楚明天面对面的考官他希望我具备什么能力。我的担心不是没有原因的,因为软件开发技术岗位向来都是既难招亦难找,企业不知道怎么考核应聘者实力,求职者不知道学什么最重要。

这里边有一个推理,在面试和通过面试的情景里,假设把企业,和求职者分两类:

  • 企业 分为懂得评估技术岗位(C1),和缺乏评估技术的企业(C2)
  • 求职者分为有实力但不懂求职技巧的(P1),实力很弱但是刷题是高手(P2)

那么会出现四种面试情况:C1P1 C1P2 C2P1 C2P2

如果假设成立,那么通过面试的只有 C1P1 和C2P2,但是真正算成功面试只有C1P1,因为只有这种结合才是良性的。