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

时间:2016-08-05 04:41:44

标签: javascript javascript-objects processing.js khan-academy

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

编辑:我问这个关于没有参数的方法,因为如果你用参数将几个方法的所有功能分组,那么在一个函数中输入十几个参数就太麻烦了。

感谢downvoting!

2 个答案:

答案 0 :(得分:3)

有不同的原因:

概述

清洁代码:敏捷软件工艺手册中,Robert Martin说:

  

功能的第一条规则是它们应该很小。第二   功能规则是它们应该小于那个。功能   不应该是100行长。功能几乎不应该是20行   长。

除此之外还有可维护性,我的意思是如果函数很长,人类对编码的理解开始缺乏。

复用性

关于功能的重点是重用它们。因此想象一个函数可以多次调用同一对象的另一个函数。要合并它,您可能需要复制您的编码。

其他原因

  1. 效果:也许您不想同时做所有事情(也许是因为它耗费时间,或者您只想在需要时执行此操作...)或者你根本不想做某些事情?
  2. 逻辑:有些内容不像绘图方法和删除方法那样属于一起。将它们合并为单个函数是没有意义的。
  3. 封装:每个函数都有自己的作用域,所以如果你只使用一个函数,你可能会搞乱范围

答案 1 :(得分:0)

接受的答案是正确的,但我也希望提供更简化的答案。

您考虑合并update()draw()功能的方式可能看起来很有意义,因为您总是一个接一个地调用它,但它不会使99.99%的其他功能感。

你可以把一个函数想象成告诉计算机做一件事("一件事"故意非常广泛)的定义,编程的整个要点是调用函数以不同的组合来制作电脑做了一些有趣的事情。如果你合并了这些功能,你将失去这种能力。

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

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

即使使用update()draw()功能,一个接一个地调用它们总是有意义的。也许您希望在不绘制每一帧的情况下运行模拟,因此您可以多次调用update()而无需调用draw()。或者您可能想要暂停动画,因此您将停止致电update()并转而致电draw()。如果你将它们组合成一个功能,你将失去这种自由。

编程就是让自由告诉计算机做你想做的事情,而组合功能则可以免除这种自由。