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

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

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

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

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

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

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

4

1 回答 1

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'关键字调用的函数(即构造函数)。

于 2013-06-25T20:02:13.180 回答