方法应该有多安全?

Sim*_*mon 5 javascript

当我写一些代码时,我想知道我的方法应该是多么安全.我应该相信我班级的用户吗?还是检查一切?这意味着参数类型检查可能不是一个好习惯,因为Javascript应该是鸭子类型.

基本上这会导致信任问题.有最好的做法吗?有隐含的"合同"吗?

示例:

CarsCollection.prototype.get = function ( index ) {
    return this.collection[index];
};
Run Code Online (Sandbox Code Playgroud)

要么

CarsCollection.prototype.get = function ( index ) {
    var self = this;

    if ( ! index ) {
        throw new ReferenceError();
    }

    if ( isNaN ( index ) ) {
        throw new TypeError();
    }

    return self.collection[index];
};
Run Code Online (Sandbox Code Playgroud)

Hal*_*yon 1

一般来说,框架代码和可重用库之类的东西是广泛参数检查的主要候选者,因为您(以及您当前和未来的同事)将大量使用这些代码。

您不必在任何地方添加参数检查,只需在合理的时候使用它们即可。

如果您想指定某些行为,例如:应该array_delete_value修改输入参数还是返回删除了值的副本?在注释中指定它并添加一个测试来准确测试此行为。

如果您担心性能,您可以编写类似断言的语句,并在缩小步骤中将其删除。这类似于在关闭断言的情况下进行编译。

断言可能类似于:

argument("index", index).of_type("number").required();
Run Code Online (Sandbox Code Playgroud)

如果您投了反对票,请发表评论。我错过了什么?您有竞争方法吗?