我最近开始在JavaScript中学习和实现对象。但它让我想到,如果一个对象的功能可以放在一个方法中,那么为什么使用Example.prototype.update = function()
和Example.prototype.draw = function()
之类的多个方法,如果其中一个方法不需要参数?我可以定义然后调用一个方法,如Example.prototype.do = function()
,并放置两个方法的所有功能。它更简单,代码更少,但是使用几种特定的方法在我的对象中建立一个结构可能会更好吗?谢谢。
感谢downvoting!
答案 0 :(得分:3)
有不同的原因:
在清洁代码:敏捷软件工艺手册中,Robert Martin说:
功能的第一条规则是它们应该很小。第二 功能规则是它们应该小于那个。功能 不应该是100行长。功能几乎不应该是20行 长。
除此之外还有可维护性,我的意思是如果函数很长,人类对编码的理解开始缺乏。
关于功能的重点是重用它们。因此想象一个函数可以多次调用同一对象的另一个函数。要合并它,您可能需要复制您的编码。
答案 1 :(得分:0)
接受的答案是正确的,但我也希望提供更简化的答案。
您考虑合并update()
和draw()
功能的方式可能看起来很有意义,因为您总是一个接一个地调用它,但它不会使99.99%的其他功能感。
你可以把一个函数想象成告诉计算机做一件事("一件事"故意非常广泛)的定义,编程的整个要点是调用函数以不同的组合来制作电脑做了一些有趣的事情。如果你合并了这些功能,你将失去这种能力。
考虑名为walkForward()
,turnLeft()
和turnRight()
的示例函数。通过以不同的顺序调用这些函数,您可以告诉您的演员走任何你想要的路径。
如果我们应用你的逻辑并将这三个函数组合成一个walk()
函数,那么该函数究竟会做什么?我们如何告诉演员走特定路径?
即使使用update()
和draw()
功能,一个接一个地调用它们总是有意义的。也许您希望在不绘制每一帧的情况下运行模拟,因此您可以多次调用update()
而无需调用draw()
。或者您可能想要暂停动画,因此您将停止致电update()
并转而致电draw()
。如果你将它们组合成一个功能,你将失去这种自由。
编程就是让自由告诉计算机做你想做的事情,而组合功能则可以免除这种自由。