假设我在全球商店里有很多实体
如果我想要函数getAppleJuicePrice,我可以用2-3种方式来实现它。
*在第2,3种情况下,我需要分派该功能
你能不能给我你的建议
( A)功能1,2,3 --这样做可以吗?还是其中一些更好?
( B)架构(我的意思是说,我们在全球商店中有很多实体,所以我们甚至可以创建依赖它们的功能)。
发布于 2018-02-08 00:32:28
我强烈地认为,例如#1。
这个函数是纯的,描述性的,不依赖于外界的知识。假设您已经可以访问状态,那么获得所追求的值几乎总是比直接请求状态更好。
如果这是不可能的,那么将数据检索分解到第二个函数,然后将您的值传递给第一个函数。这样您就可以清楚地分离关注点,您的方法很容易理解,您不依赖于副作用(状态值的存在),而且这两种方法都应该易于测试。
见鬼,你可以更进一步,重构函数1,成为一个通用的实用工具,用来比较/组合任何东西的价格,而不仅仅是苹果和果汁的价格。
const stateObject = getState() // At top of whatever scope
// Generic, no side-effects
function processPrice (x, y) {
return x * y; // Whatever processing
}
// Specific, injected dependency on state
function getAppleJuicePrice (state) {
const { apples, juice } = state;
return processPrice(apples, juice);
}
// Explicit value assignment
const appleJuicePrice = getAppleJuicePrice(stateObject)简单地评论一下商店体系结构:总是要尽可能地保持它的简单、扁平和数据相关。为了方便价值计算,避免损害存储的数据结构。任何您可以在本地(并且很容易)派生的东西,都应该这样做。商店不是复杂价值突变的场所。
(*先发制人-这不是一条硬性规则,只是一条准则)
https://stackoverflow.com/questions/48675297
复制相似问题