何时使用 - 多个方法,多个参数或选项参数

Nic*_*ick 6 javascript methods coding-style function

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

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

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

  • 多种方法:

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

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

    this.makeRequest = function(controller, type, options);
    this.makeRequest("friends", "POST", {data:newFriend, isSync:false});
    
    Run Code Online (Sandbox Code Playgroud)

HTTP请求示例只是激发了问题,但这适用于具有不同数量的自定义/变量的任何面向公众的功能.

这三个显然都是功能性的.但是什么是好的做法?是否有一个标准或指南往往被遵循?

Vot*_*ple 3

该参数的优点options是它允许无限的选项而不牺牲清晰度。当有人指定data:或者isSync:很明显要填写哪些设置时。记住将函数中的第 13 个参数设置为 会false导致混乱。

\n\n

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

\n\n

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

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

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

  4. \n
\n