我一直在不自觉地将功能性方法合并到我的JavaScript代码中,但是在某些方面仍然很难弄清楚。我对如何在不使用类的情况下管理某些不可变状态感到困惑。
例如,这是我使用过的一类:
isExplicitlyNonTransient(Throwable)
没有一个类方法会更改引用。
我的问题是,使用类是否是不良的函数式编程实践?如果是这样,标准的替代方法是什么?我可以考虑将ID作为每个函数的附加参数传递。我也调查过柯里。谢谢!
答案 0 :(得分:0)
这取决于。您可以使用类来简化函数式编程。在这种情况下,oop代码成为实现细节。它也可以是一种优化技术,因为该类的所有实例都可以使用该类中函数的相同实例。
如果您想要纯正fp的语法简洁性,那么oop总是会给您带来麻烦,但是,如果您只是希望代码是可预测/可测试的,那么它就不必成为代码库中的主要范例。许多功能库都在后台使用类。
但是,您发布的代码对我来说就像是oop代码。为什么有_ref?该类只是噪音。唯一发生在这里的是
const getUserData = async (id) => {
const data = await db.collection(..).doc(id);
return data.map(doc => {
// some transformation
})
}
最好是
const getUserData = (id) => db.collection(..).doc(id)
.then((data) =>
data.map(doc => {
// some transformation
}
);
请注意,您可以在promise类上使用.then方法,以避免命令式async / await语法