在组合中使用 Object.assign() 时可以使用相同的函数名称吗?
Can I use the same function names when using Object.assign() in composition?
上下文
我使用 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
使用组合的约定是 "thing-doer"。您的 updateScore
组合物是 "scoreUpdater" 而它是 "updateScore"。
会这样写:
const scoreUpdater = (state) => ({
updateScore: (spell) => state.score--
})
现在,update
出于清晰度和设计原因,它本身就是一个相当糟糕的名称。想象一下另一个将更新健康的组合:healthUpdater 也实现了 update
方法。其中一个将覆盖另一个。
一般来说,组合体中的属性名称应该以某种方式明确指代组合体本身。
canUpdateScore
绝对是一个糟糕的对象名称,无论它是否暗示一个布尔值,事实并非如此。
上下文
我使用 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
使用组合的约定是 "thing-doer"。您的 updateScore
组合物是 "scoreUpdater" 而它是 "updateScore"。
会这样写:
const scoreUpdater = (state) => ({
updateScore: (spell) => state.score--
})
现在,update
出于清晰度和设计原因,它本身就是一个相当糟糕的名称。想象一下另一个将更新健康的组合:healthUpdater 也实现了 update
方法。其中一个将覆盖另一个。
一般来说,组合体中的属性名称应该以某种方式明确指代组合体本身。
canUpdateScore
绝对是一个糟糕的对象名称,无论它是否暗示一个布尔值,事实并非如此。