【问题标题】:Is giving arguments wrapped inside an object to a function a bad idea?将包装在对象中的参数提供给函数是一个坏主意吗?
【发布时间】:2012-06-20 18:53:36
【问题描述】:

通常,随着我的代码库的增长,函数接收的参数越来越多,维护起来有点马虎,所以我通常只是默认为这样的:

f = function(args){return args.v + 1;}

f({"v":2});

它看起来更干净,但是可以这样做吗?为什么不是每个人都这样做?

【问题讨论】:

  • 在这些情况下,您可能想开始研究 JavaScript 类 (OOP)... 这些“匿名对象”的问题是程序员必须记住(现在和六个月后)道路)给定功能需要哪些属性。使用带有显式参数 (arg1, arg2) 的函数,您可以更轻松地了解(特别是如果您正确标记了参数)该函数对参数的要求......但是,对于许多参数,如果适用,我可能会建议 OOP。 ....

标签: javascript performance function arguments


【解决方案1】:

通常,如果一个函数接受了太多参数,它可能做的太多了。您应该考虑将其重构为更小的函数/对象。

Bob 大叔在他的《清洁代码》一书中建议使用很少参数的函数,我同意。当您有许多参数或传入一个对象或数组时,它会使代码难以阅读。如果您在不读取函数主体的情况下传入一个对象,我无法猜测该函数将对所有参数做什么,或者它期望作为参数做什么。

【讨论】:

    【解决方案2】:

    “它看起来更干净,但可以这样做吗?”

    是的。

    “为什么不是每个人都这样做?”

    不是吗?这是 Javascript 中最常见的“多参数”情况的标准做法:传递选项。由于在 Javascript 中创建一次性对象没有任何开销,因此当您有多个参数时,这是一种常见的做法。

    【讨论】:

      【解决方案3】:

      这很好 - 只要您对作为变量传递的对象类型保持良好的控制水平,并在必要时验证这些值(考虑“假”/空/未定义类型问题)然后是的,这是一个很好的做法。也更容易维护。

      【讨论】:

        猜你喜欢
        • 2013-09-16
        • 1970-01-01
        • 1970-01-01
        • 2014-12-23
        • 1970-01-01
        • 2015-03-11
        • 2011-05-14
        • 1970-01-01
        • 2014-10-15
        相关资源
        最近更新 更多