万博体育最新资讯

UX和所有东西网络

用选项对象证明方法的未来性

拥有需要大量参数的方法可能是一种真正的痛苦。您不仅需要记住要传递哪些参数,还需要记住提供这些参数的顺序。当需要向现有方法添加更多参数时,情况会变得更糟。本文将通过只使用一个参数向您展示一种更好的方法。

这个 膨胀方法的问题

膨胀方法的问题是双重的。

  • 它们很难使用因为它们要求您记住所有参数和它们需要提供的顺序
  • 他们很难改变.向现有方法添加参数可能要求您查找使用该方法的每个实例,并使用其他参数更新这些调用。

以这个方法为例。

var bio=函数(id,姓名,说明)//代码

好啊,也许它没有那么膨胀。我认为使用最多3个参数是可以的,但再加上这些,就变得越来越乱了。但是为了解释,我们假设它是膨胀的,你想补救它。

关于函数和方法的一句话

我在这里讨论方法,但是函数和方法本质上是相同的。唯一不同的是,方法是作为对象一部分的函数。所以在这个例子中,我假设所使用的函数是对象的一部分,因此命名方法。

功能解剖学

客观化

好啊,那么我们如何解决这个问题呢?答案很简单——使用一个选项对象而不是几个参数。它解决了上面列出的所有问题。看看这个:

  • 你不必记住用什么顺序来提供论点
  • 不需要在所有调用上提供所有参数
  • 易于提供默认值
  • 易于扩展参数数量而不破坏功能。

好吧,那这是怎么做到的?让我们看一下用于构造方法的代码。

var bio=函数(选项)var id=选项.id-1,name=options.name'empty',description=options.description'空';}

首先您会注意到,方法不采用多个参数,而是只采用一个被调用的选项。但是你可能想知道函数内部发生了什么?

函数内部有一个检查,确保对象具有某些属性,并将这些属性保存到局部变量中。如果财产丢失,提供默认值。

调用对象化方法

好啊,现在你知道如何创建这个方法了,但是使用它呢?让我们看一些代码。

//创建选项对象var options=id:1,姓名:'卢克·天行者',description:'年轻天才'//调用方法bio(选项);

在上面的代码中,首先创建一个Options对象,并用要传递给方法的值填充该对象。

然后,当调用该方法时,Options对象将用作单个参数。

音符:选项对象被创建为对象文本,这是一种方便的动态创建对象的方法。

扩展对象

现在,如果您需要添加另一个参数呢?

没问题,改变你的方法接受新的论点。

你可以用两种方法中的一种。

  • 通过提供默认值
  • 通过检查属性是否存在并做出相应的反应。

第一种方法是如何在示例中实现它,所以您只需要遵循相同的模式。

另一种方式是相同的事情,但有点不同。在需要使用属性时,您可以简单地检查属性是否存在,而不是提供默认值。

让我们用一个新的论点来尝试一下:职业.

var bio=函数(选项)var id=选项.id-1,name=options.name'empty',description=options.description'空';if(options.profession)警报(name+'是一个'+职业);}else//某种回退

现在,即使您在不提供专业属性的情况下调用该方法,代码也不会中断。因为我们正在检查它的存在,所以这个方法可以很好地处理它。这意味着您不必担心破坏现有功能。

专业小贴士

您可以在调用方法时动态创建Options对象,从而使对方法的调用更加简洁。这样地:

BIO({ ID:1,姓名:'卢克·天行者',描述:“年轻天才”);

我通常是这样做的,当然,除非我也需要将选项对象用于其他事情。然后最好将它存储在一个变量中,这样就不必重新创建它了。

结论

在对象中传递参数而不是作为单个参数传递参数是改进方法的一个很好的方法。它保留了你的方法简洁的可扩展的易于使用.我的建议是:

每当您发现自己使用的方法需要2或3个以上的参数时,在选项对象中传递它们。

快乐编码!

音符:这篇文章以前发表在代码绘制蓝图.

1评论

  1. 伟大文章,是的,这是我们在其他语言中强制使用的方法,但在我们常见的编程实践中却没有。提醒很好!

留下答复

您的电子邮件地址将不会发布。

*

专利文献2019万博体育最新资讯

主题通过安德斯诺伦-向上