3

这不是我遇到的具体问题,更多的是我可以做出的选择,但我确实相信这个问题与 SO 相关,因为可能有一个“正确的”OO 答案,以及这样做的性能收益/损失。我在 AS3 工作,但我相信这个问题与其他基于类/oo 的语言有关。

我试图想办法为具有不同参数的类提供 Java 风格的多个构造函数(这是另一个故事),但这让我想到了 jQuery,以及它如何通过让函数尽可能地返回它们的对象来链接函数正在被召唤。

它并不总是使用 jQuery 编写最整洁的代码,我想这是与经典方法不同的做法,但我想知道这种方法是否有什么要说的:

//execute chains of methods on creation, as each returns its parent class (person)
var person:Person = new Person().male('a male', 25).wakeUp().lookAround();

//Or later
person.getUp().rubEyes();

...以及是否让成员函数都返回一个通常不需要的对象是否代表任何重大浪费/性能问题?

这似乎是一种保存代码并以更易读的方式表示函数序列的好方法,我想知道是否有人可以提供帮助。

提前致谢

4

1 回答 1

2

是的,有一点要说person.getUp().rubEyes():语义上看起来更好。就这样。

new Person().male('a male', 25)不过是完全不同的情况。Male 不是 getUp 之类的动词。我更喜欢:new Person({ gender: 'male', age: 25})

不使用返回的对象时是否会对性能造成重大影响?不。首先,大多数(jit)编译器足够聪明,可以确定返回的对象从未使用过,因此根本不会执行这些指令。这是一种称为死代码消除的优化策略。其次,即使编译器不会执行这种优化,我们仍然在谈论一些微不足道的时钟周期。没有什么你应该担心的。一般来说,我建议您根本不要担心这些性能问题。更好地将优化工作集中在编译器无法帮助您处理的代码部分(即设计、算法等)上。

玩得开心连锁!

于 2013-05-05T09:50:54.927 回答