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

标签 javascript function methods coding-style

这个问题来自 javascript 的 Angular ,但它当然可以适用于其他语言。

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

我看到的明显选项如下,每个选项都有一个简单的例子

  • 多种方法:

    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 请求示例只是激发了这个问题,但这适用于任何具有不同数量的定制/变量的面向公众的功能。

这三者显然都具有同样的功能。但是什么是好的做法呢?是否有通常要遵循的标准或指南?

最佳答案

options 参数的优点是它允许无限的选项而不牺牲清晰度。当有人指定 data:isSync: 时,很明显正在填写哪些设置。记住将函数中的第 13 个参数设置为 false是混淆的秘诀。

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

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

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

  2. 无论如何您都不想设置其他选项。如果我首先必须记住是调用 foo.get() 还是 foo.post() and 然后记得填写一个 options 对象无论如何,我只是强制你在两个不同的地方做出决定。我宁愿将所有设置集中在一个地方。

关于javascript - 何时使用 which - 多个方法、多个参数或一个选项参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11457449/

相关文章:

javascript - 单击单选按钮调用多个函数

MySql 函数没有返回正确的结果

java - 使用 java 中的按钮停止或退出方法时遇到困难

swift - 如何使用 if/else 函数赋予 UIImageView 属性?

python - 子进程:执行两个或多个preexec_fn

swift - 我的快速方法没有输出

excel - 未找到 ActiveX ComboBox 方法或数据成员

javascript - 为什么这个简单的 JS promise 会返回一个 promise?

javascript - 在 JavaScript 类中添加回调功能

javascript - Iframe 的滚动条