这个问题是从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){...}
    
  • 一种方法,带有options参数:
    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等等)时,多种方法只是一个选择。考虑一下,我可能仅在以下情况下设置单独的方法:

  • 的区别非常重要(同步请求的行为与异步请求在本质上是不同的,我希望开发人员有意识地选择要应用的对象。(相比之下,GET与POST只是请求的另一个属性-这不是目的-如果您做错了,那就是破坏交易的决定。)
  • 无论如何,您没有其他要设置的选项。如果我首先必须记住是调用foo.get()还是foo.post(),然后无论如何都要记住填写options对象 ,我只是在强制您在两个不同的地方做出决定。我宁愿将所有设置都放在一个地方。
  • 关于javascript - 何时使用哪种-多种方法,多种参数或选项参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11457449/

    10-12 12:36
    查看更多