2013-06-25 64 views
1
Create: function (title, text, orientation, trigger, layout) { 
     $(this).attr 
    }, 

触发器参数必须接收两个非常具体的词之一:'悬停'或'点击',我想不出一个好办法来缓解执行这个功能。哪个是验证函数接收参数的最佳方法

我也觉得有些解决方案:

  1. 我可以尝试在功能验证参数一旦已经内,并返回一个“console.info”一个错误的参数有突破的情况下执行后右已发送,通知他的错误的开发商

  2. 我可以创建一个ENUM,并提供它作为开发接口(这仍然让开发者们为了读它正确地使用它)

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

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

+3

假设您的意图是创建公开可用的东西,它应该有一个发布的API来定义参数,并且不应该要求开发人员阅读代码。 –

+2

您是否想知道如何验证* one *特定参数的值或如何处理如此多的参数。就个人而言,如果有超过3个参数,并且如果可以有可选的参数,我会让该函数接受一个对象。使用默认值是很好的IMO。 –

+0

@JamesMontagne如果听起来像我愿意将它发布到某个地方,我很抱歉。这不仅仅是一个真正的问题,而是一个概念性的问题,但是我正在一家公司开发,并且我想使用最佳实践,因为其他开发人员也会使用这些代码。 – v1n1akabozo

回答

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) 

以这种方式唯一的应用程序是全球性的,但输入的应用.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 - 不要用大写字母开头函数名,除非它是一个函数,应该用'新'关键字(即构造函数)。

+0

我同意这两个陈述,这只是我没有使用JavaScript和网页开发,所以我不知道我是否应该关心实施。任何读完函数的人都应该知道如何使用它,所以我不知道我必须走多远才能进行验证并指出它的使用错误。 – v1n1akabozo

+0

@ v1n1akabozo答案更新与处理错误的技术。 – Hoffmann

+0

那是我等待男人的答案,我很感激。抛出一个异常似乎比使用console.info来提示错误好得多,并且将返回值设置为null也非常直观。谢谢 – v1n1akabozo