gpt4 book ai didi

javascript - 将 OOP 类转换为 FP 函数的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 23:43:38 25 4
gpt4 key购买 nike

我找到了一个充满 JavaScript 算法和数据类型的 GitHub 存储库。问题是,一切都是用 OOP 编写的。我本人更喜欢使用小型、可重用函数的 FP 方法。将类转换为较小的可使用函数的最佳实践有哪些?

现在,我可以提出以下工作示例。这是要走的路吗?

面向对象编程:

class LinkedListNode {
constructor(value, next = null) {
this.value = value;
this.next = next;
}

toString(callback) {
return callback ? callback(this.value) : `${this.value}`;
}
}

FP:

function toString(value, callback) {
return callback ? callback(value) : `${value}`;
}

function Node(value, next = null) {
return {
value,
next,
toString(callback) {
return toString(value, callback);
}
};
}

最佳答案

在第二个示例中,每个实例仍然附加一个方法,当您想在兼容的接口(interface)上重用此方法时,这并不理想。而且它与许多 FP js 库不能很好地配合。

为了从外部清楚地表明它不是构造函数,请将其以小写开头并添加前缀,例如 create。

使函数尽可能纯净,不要将代码组合逻辑(compose、curry)与业务逻辑混合。 (我谈论的是回调在 toString 内部无关)

我添加导出是为了清楚地表明至少需要导出 2 个函数。

export { nodeToString, createNode };

function nodeToString(node) {
return `${node.value}`;
}

function createNode(value, next = null) {
return {
value,
next
};
}

它会像这样使用

import { nodeToString, createNode } from "./x.js";

const node = createNode(`myvalue`);
const string = nodeToString(node);

关于javascript - 将 OOP 类转换为 FP 函数的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55955248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com