【发布时间】:2017-09-10 12:06:23
【问题描述】:
您好,我有以下课程:
const MyClass = function MyClass() {
this.state = null;
}
MyClass.prototype.set = function(key, value) {
this[key] = value;
}
以及其他模块中的以下枚举:
const enumeration = {
ACTIVE: 'active',
PENDING: 'pending',
DONE: 'done'
}
我想知道处理枚举属性的 setter 的最佳实践/约定是什么(在此处说明)
我可以这样做:
let myClass = new MyClass();
myClass.set('state', enumeration.PENDING);
但它有点冗长,我需要了解 myClass 模块和 enum 模块。
另一个想法是这样做:
const MyClass function MyClass() {
this.state = null;
}
MyClass.prototype.setPending = function() {
this.state = enumeration.PENDING;
}
并允许拨打myClass.setPending()
但是我不知道这种setter的正确命名。
【问题讨论】:
-
三个观察/问题: 1. 在
const MyClass之后您缺少=(为什么不直接使用class,因为您已经清楚地使用了ES2015+ 语法?)。 2.set方法的意义何在? 3.enum是future reserved word,不能作为标识符使用。 -
到底是做
myClass.set('state', yourenum.PENDING)还是myClass.setPending()完全是见仁见智和风格的问题。这类问题对 SO 来说是题外话。 -
1-(已编辑)拼写错误。 2- ES6 类只是语法糖。 3-(已编辑)拼写错误。我认为这不是风格问题,而是建模和架构问题。
-
什么架构?这只是一个类,只是一个属性。关于命名属性和有枚举与没有枚举的讨论是真正的
primary opinion based事情。 -
我更喜欢
.setState(enum.PENDING),然后是.getState() === enum.PENDING。枚举应该是符号
标签: javascript oop enums convention