哪种方法是验证函数接收的参数的最佳方法

时间:2013-06-25 19:40:23

标签: javascript

Create: function (title, text, orientation, trigger, layout) {
        $(this).attr
    },

触发器参数必须接收两个非常具体的单词之一:'hover'或'click',我想不出一个简化此功能实现的好方法。

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

  1. 我可以尝试在函数内部验证一次参数,并在执行错误参数后立即返回'console.info',告知开发人员他的错误

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

  3. 在输入此帖子时发生了我可以为选项设置标准值,因此它们是可选的。

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

1 个答案:

答案 0 :(得分:0)

直接与字符串进行比较是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:返回null。

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

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

选项3:悄悄地忽略错误而不做任何事情。您的脚本可能会自行崩溃,也不会执行任何操作。不推荐

观察:

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

2 - 不要用大写字母开始你的函数名,除非它是一个应该用'new'关键字调用的函数(即构造函数)。