为什么有多个不带参数的对象方法?

Why have multiple object methods without parameters?

我最近开始学习和实现 JavaScript 中的对象。但这让我想到,如果一个对象的功能可以放在一个方法中,那么如果其中一个方法不需要参数,为什么还要使用多个方法,比如 Example.prototype.update = function()Example.prototype.draw = function()?我可以只定义然后调用 one 方法,例如 Example.prototype.do = function() 并放置这两种方法的所有功能。它更简单,代码更少,但也许在我的对象中使用几个特定方法的结构更好?谢谢。

编辑:我问这个关于方法 没有 参数的问题,因为如果你将几个方法的所有功能与参数组合在一起,那么将十几个参数输入一个参数将是一件非常乏味的工作功能。

感谢投反对票!

有不同的原因:

概览

Clean Code:敏捷软件工艺手册中,Robert Martin 说:

The first rule of functions is that they should be small. The second rule of functions is that they should be smaller than that. Functions should not be 100 lines long. Functions should hardly ever be 20 lines long.

随之而来的还有可维护性,我的意思是如果函数很长,人类对编码的理解就会开始缺乏。

可重用性

函数的全部意义在于重用它们。所以想象一个函数多次调用同一个对象的另一个函数。要合并它,您可能需要复制您的编码。

其他原因

  1. 性能:也许你不想同时做所有的事情(也许是因为它很耗时,或者你只想在需要的时候做。 ..) 或者您根本不想做某些事情?
  2. Logic:有些东西不属于一起,比如 绘图 方法和 擦除 方法。将它们合并为一个函数是没有意义的。
  3. 封装:每个函数都有自己的范围,所以如果你只使用一个函数,你可能会弄乱范围

接受的答案是正确的,但我也想提供一个更简单的答案。

您考虑组合 update()draw() 函数的方式可能看起来很有意义,因为您总是一个接一个地调用,但对于99.99% 的其他功能。

你可以把一个函数想象成告诉计算机做一件事("one thing" 的定义故意非常宽泛),而编程的重点就是以不同的组合调用函数来使计算机做一些有趣的事情。如果你组合功能,你将失去这种能力。

考虑名为 walkForward()turnLeft()turnRight() 的示例函数。通过以不同的顺序调用这些函数,您可以告诉您的演员走您想要的任何路径。

如果我们应用您的逻辑并将这三个函数合并为一个 walk() 函数,那么该函数究竟会做什么?我们如何告诉演员走特定的路?

即使使用 update()draw() 函数,一个接一个地调用它们并不总是有意义的。也许您想 运行 模拟而不绘制每一帧,因此您可能会多次调用 update() 而不会调用 draw()。或者您可能想要暂停动画,因此您将停止调用 update() 并只调用 draw()。如果将它们组合成一个功能,您将失去这种自由。

编程就是告诉计算机做你想做的事的自由,而组合函数则剥夺了这种自由。