【问题标题】:Is there a benefit to avoiding extra class instantiations?避免额外的类实例化有什么好处吗?
【发布时间】:2017-07-13 15:27:23
【问题描述】:

下面是一些使用 Zend Form API 创建表单和创建子表单(又名字段集)的代码

AnnotationBuilder 类似乎没有与之关联的__construct,因此实例化一个新的AnnotationBuilder 对象是一个轻量级操作。

也就是说,我相信下面的代码可以保持原样:

$form = (new AnnotationBuilder())->createForm(CustomForm::class);
$form->add((new AnnotationBuilder())->createForm(CustomFieldset1::class));
$form->add((new AnnotationBuilder())->createForm(CustomFieldset2::class));

是否需要重构上述代码,或者保持原样是否安全?就性能而言,我认为除了几个额外的对象实例化之外,不会有任何重大损失。

例如,作为替代方案,我正在考虑创建一个变量来保存new AnnotationBuilder(),作为本地或在类范围内,然后根据需要重用该变量。但我不一定认为在这里这样做有什么好处。

【问题讨论】:

  • new AnnotationBuilder() 构造一个新对象。这会使用内存 - 多少 无关紧要。如果你热衷于(微)优化,你想避免这种情况。除非需要来构建一个新对象。

标签: php refactoring dry


【解决方案1】:

我看不出你应该使用$builder = new AnnotationBuilder();的理由。

实例化构建器只会浪费几微秒。 AnnotationBuilder 可能有一些内部逻辑,可以对表单中的某些元素进行性能优化,例如通过使用某种属性缓存,例如

我不建议你一次又一次地创建任何对象,直到你真的想要一个新的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多