2

我是 JS 开发的新手,我发现自己花费了更多的精力来修复由模型属性中的拼写错误引起的错误,尤其是 model.get() 的用法。虽然我的单元测试确实捕获了其中的大部分,但在编码时修复并且必须记住名称仍然很烦人。有什么东西可以警告我这些错别字吗?

4

3 回答 3

3

我们使用的一种策略是定义一个哈希并将它们用于 setter 和 getter

var ATTRS = {
    attr1: 'attr1',
    attr2:  'attr2'
}

model.set (ATTRS.attr1, 'attr1_val');
model.get (ATTRS.attr1);

对于某些情况,例如由于 JS 不允许在哈希的左侧使用变量,您将无法使用它。但在大多数情况下,它有助于消除最简单的拼写错误

{ ATTRS.attr: 'def_val' }  // this will give an error

希望这有帮助

于 2013-08-13T04:08:36.517 回答
1

首先,安装插件_super:

https://github.com/lukasolson/Backbone-Super

现在创建一个抽象模型:

YourAbstractModel = Backbone.Model.extend({
    get : function(attr){
        if( !_.has(this.defaults, attr) ){
            throw 'Invalid attribute: ' + attr;
        } 

        return this._super(attr);
    }        
});

您的模型应该扩展抽象而不是 Backbone.Model(并且您应该设置默认值)。

于 2013-08-13T18:28:01.920 回答
0

我认为测试是最好的方法。

包含最终将成为生产应用程序一部分的验证/拼写检查代码是一个坏主意。如果您错误地键入了变量的名称 - 它应该由您的开发时测试发现,而不是一些运行时验证。

于 2013-08-13T03:37:02.880 回答