道格拉斯·克罗克福德最近一直在给一次谈话取名为“好的部分”。讨论的要点是,JavaScript开发人员实际上应该避免使用坏部件的超集,这些部分现在包括new、Object.create、任何委托或继承(包括ES6类)和this。
具体来说,Crockford建议使用一个构造函数来定义新的对象类型,它创建并返回一个新的对象,并且使用闭包来创建私有变量等等。显而易见的问题是,每个实例都有直接绑定到实例的每个方法;没有委托,这就需要内存。克罗克福德声称这不是一个问题,因为内存太便宜了。我觉得这很难令人信服。
在某种类型需要一组方法并且可能同时存在大量实例的情况下,任何体面的JavaScript开发人员都会将这些方法放入对象中,并将每个实例委托给它。因此,默认情况下只使用这种一步授权似乎是合理的。这违背了更好的部分的建议,一旦有人说“为什么不使这个授权递归”,我们就回到了我们开始的地方。
显然,如果您创建了大量的任何实例,您会使用委托作为一种明显的优化,但我们通常谈论的是相对较小的数字,所以对于这种情况,我们能忘记成本吗?
遵循克罗克福德的建议,特别是关于避免委托的运行时成本是多少?对于那些通常运行web浏览器的消费设备来说,成本一般都很低吗?
发布于 2014-12-20 17:22:00
这让我想起了最近关于https://cs.stackexchange.com/questions/35385/for-small-values-of-n-on-can-be-treated-as-if-its-o1的一个问题。答案是一样的--是的,对于小的价值。
什么是小的,你会处理小的吗?那是基于经验和你的领域而浮动的。但是你去找专家了解他们的专业知识,没有一个明确的性能问题,或者你自己的专业知识,说你的领域是不典型的,我相信他们在这样的性能问题上。
记住,他是在和观众说话,而不是单独跟你说话。如果你想知道他在你的案子中是否正确,那就测量.
https://softwareengineering.stackexchange.com/questions/266994
复制相似问题