避免额外的类实例化是否有好处?

时间:2017-07-13 15:27:24

标签: php refactoring dry

下面是一些使用Zend Form API创建表单和创建子表单(又称Fieldsets)的代码

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(),作为本地或类范围,然后根据需要重用该变量。但我不一定看到这样做的好处。

1 个答案:

答案 0 :(得分:0)

我没有找到你使用$builder = new AnnotationBuilder();的原因。

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

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