这是验证函数接收的参数的最佳方式

Which is the best way to validate the parameters received by a function

本文关键字:参数 最佳 方式 验证 函数      更新时间:2023-09-26
Create: function (title, text, orientation, trigger, layout) {
        $(this).attr
    },

触发器参数必须接收两个非常具体的单词之一:"悬停"或"单击",我想不出简化此函数实现的好方法。

我确实想到了一些解决方案:

  1. 我可以尝试在函数中已经验证参数,并在中断执行后立即返回"console.info",以防发送错误的参数,通知开发人员他的错误

  2. 我可以创建一个ENUM并将其作为开发人员的接口提供(这仍然会使开发人员必须阅读它才能正确使用它(

  3. 我在输入这篇文章时想到我可以为选项设置标准值,因此它们是可选的。

我只是不知道在这种情况下哪一种是最好的方法。我可以假设愿意使用代码的开发人员必须阅读代码以找到实现它的最佳方式,或者(正如我想的那样(我应该关注像我描述的验证一样?还有哪一个是最好的?

直接比较字符串是javascript中的常见做法。类 ENUM 结构虽然易于实现,但通常不是很常用,因为您要么必须将类 ENUM 定义为全局变量,要么执行以下操作:

application.enums.myObject.hover= 1;
application.enums.myObject.click= 2;
myObject= new application.constructors.MyObject();
myObject.create(title, text, orientation, application.enums.myObject.hover, layout)

以这种方式,只有应用程序是全局的,但是键入application.enums.myObject是一种痛苦。

如何处理错误:

选项 1:引发异常:

Create: function (title, text, orientation, trigger, layout) {
        if (trigger !== "hover" && trigger !== "click") {
            throw "error: invalid parameter trigger";
        }
    },

这将使您的脚本崩溃,除非您在某处有 catch 子句。在某些情况下,崩溃派对总比不提供知道问题所在的方法要好。如果您打算捕获这些异常(而不是让它们只是使脚本崩溃(,我建议您通过为您的错误等创建类来正确执行此操作。

选项 2:返回空值。

Create: function (title, text, orientation, trigger, layout) {
        if (trigger !== "hover" && trigger !== "click") {
            return null;
        }
    },

如果要使用函数的返回值,则此方法效果更好。调试时,尝试使用返回值时,您将看到"对象没有名为 X 的属性"错误(或者,如果这样使用它,您的值将被强制转换为"null"字符串(。

选项 3:悄悄地忽略错误,什么都不做。您的脚本要么自行崩溃,要么什么都不做。不推荐

观察:

1 - 不要在生产代码中使用控制台对象。它不是标准的一部分,IE 不会将其公开给网页,除非您打开开发人员控制台

2 - 不要以大写字母开头,除非它是应该使用"new"关键字调用的函数(即构造函数(。