Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 何时使用哪个-多个方法、多个参数或一个选项参数_Javascript_Function_Methods_Coding Style - Fatal编程技术网

Javascript 何时使用哪个-多个方法、多个参数或一个选项参数

Javascript 何时使用哪个-多个方法、多个参数或一个选项参数,javascript,function,methods,coding-style,Javascript,Function,Methods,Coding Style,这个问题来自javascript的观点,但它肯定可以应用于其他语言 我最近越来越多地遇到这个问题,我想知道是否有一个最佳实践,或者至少是良好的设计标准,用于何时构建方法 我看到的显而易见的选项如下所示,每个选项都有一个简单的示例 多种方法: this.makeGetRequest = function(controller){...} this.makeSynchronousGetRequest = function(controller){...} this.makePostRequest

这个问题来自javascript的观点,但它肯定可以应用于其他语言

我最近越来越多地遇到这个问题,我想知道是否有一个最佳实践,或者至少是良好的设计标准,用于何时构建方法

我看到的显而易见的选项如下所示,每个选项都有一个简单的示例

  • 多种方法:

    this.makeGetRequest = function(controller){...}
    this.makeSynchronousGetRequest = function(controller){...}
    this.makePostRequest = function(controller, data){...}
    
  • 一种方法具有更多参数:

    //data would be an optional parameter
    //  this.makeRequest("friends", "GET", true);
    //  this.makeRequest("friends", "POST", false, newFriend);
    this.makeRequest = function(controller, type, isSynchronous, data){...}
    
  • 一种方法,带有选项参数:

    this.makeRequest = function(controller, type, options);
    this.makeRequest("friends", "POST", {data:newFriend, isSync:false});
    
HTTP请求示例只是为了解决这个问题,但这适用于任何具有不同数量自定义/变量的面向公众函数

显然,这三者都具有同样的功能。但是什么是好的实践呢?是否有一个标准或指导方针可以遵循?

显然,对于多个方法,您需要有一些他们会调用的抽象超级方法,否则您会重复自己的操作,这被认为是不好的,但是有时候有别名或速记之类的方法是很好的(参见jQuery
$.getJSON()
用于修改的
$.ajax()
-Call)

如果您有大量的spechial case或可选参数,那么具有更多参数的一种方法实际上并不灵活,因为您可能会使用第三个示例中提到的options对象

这实际上取决于用例和所需的灵活性/可重用性。
就我个人而言,我总是使用一种方法,即选项参数方法。

选项参数的优点是,它可以在不牺牲清晰度的情况下提供无限的选项。当有人指定
data:
isSync:
时,很明显填写的是什么设置。记住将函数中的第13个参数设置为
false
,会导致混淆

因此,在最后两个选项之间,我只在以下情况下使用多个参数:(1)总共少于四个参数,(2)序列是逻辑的且易于记忆(URL,然后是类型,然后是数据),并且(3)不超过一个(最后一个)是可选的。无论如何,这是一条经验法则

多方法与参数化相比怎么样?当您有少量的可能性(GET vs.POST、UseDefaults vs.DontUseDefaults或其他)时,多个方法只是一个开始的选项。考虑到这一点,我可能只在以下情况下设置单独的方法:

  • 区别是非常重要的(同步请求的行为与异步请求根本不同,我希望开发人员有意识地选择应用哪种请求。(相比之下,GET vs.POST只是您请求的另一个属性-如果您做错了,这不是一个最终的、破坏交易的决定。)

  • 不管怎样,您都不想设置其他选项。如果我首先必须记住是调用foo.get()还是foo.post()然后记得填写一个
    选项
    对象无论如何,我只是强迫你在两个不同的地方做决定。我宁愿把所有设置都放在一个地方

  • 让json选项的“超级方法”实现最大的灵活性,然后使用一些具有更严格定义的参数的包装器方法来轻松访问最常用的功能如何