上下文
我使用Javascript中的合成范例创建了一个新对象。
const canUpdateScore = (state) => ({
update: (spell) => state.score--
})
const mage = (name) => {
let state = {
score: 100,
}
return Object.assign(state, canUpdateScore(state));
}
scorcher = mage()
scorcher.update(); // call the update method
console.log(scorcher.score) // 99
问题
将辅助方法命名为与返回该方法的外部函数相同(下面的示例)会引起混淆吗?还是最好使用不同的名称(在上面的上下文中)?
const updateScore = (state) => ({
updateScore: (spell) => state.score--
})
const mage = (name) => {
let state = {
score: 100,
}
return Object.assign(state, updateScore(state));
}
scorcher = mage()
scorcher.updateScore(); // call the update method
console.log(scorcher.score) // 99
答案 0 :(得分:1)
使用合成的惯例是“做事者”。您的updateScore
作曲家是“ scoreUpdater”,它是“ updateScore”。
会这样写:
const scoreUpdater = (state) => ({
updateScore: (spell) => state.score--
})
现在,update
本身就是一个很糟糕的名称,这既出于清晰性原因,也出于设计原因。想象一下,您会发现另一个将更新运行状况的合成器的情况:healthUpdater也实现了update
方法。其中一个将覆盖另一个。
通常,构成要素中的属性名称应以某种方式明确引用构成要素本身。
canUpdateScore
绝对不是一个对象的坏名字,无论它暗示的是布尔值,还是不是这种情况。