我将尝试通过一个例子来说明这一点:
class DogShelter
{
private $dog;
public function handleDogDirect( )
{
$this->dog = trim( $this->dog );
$this->dog = rtrim( $this->dog, 'abc' );
$this->dog = strtolower( $this->dog );
$this->dog = basename( $this->dog );
}
public function handleDogIndirect( )
{
$dog = $this->dog;
$dog = trim( $dog );
$dog = rtrim( $dog, 'abc' );
$dog = strtolower( $dog );
$dog = basename( $dog );
$this->dog = $dog;
}
}
在不同情况下哪个功能更好 - handleDogDirect
或handleDogIndirect
?
顺便说一下:
自rep repalc以来,我再也无法使用WordPress的OpenID登录了。它一直在说No OpenID endpoint found.
。我真的很感激任何帮助。
答案 0 :(得分:3)
我会使用handleDogDirect
,因为它正在访问$dog
的实例,这似乎是您想要实现的目标。后一个函数似乎创建了一个不必要的变量来执行相同的函数。
作为一种约定,每当我使用类的属性时,我都在类函数内部,我总是直接使用$this
关键字。
如果两者中的任何一个存在性能问题,则可能忽略不计。我 强烈 建议在担心性能时担心性能问题。
答案 1 :(得分:1)
我认为无缘无故地创建一个新变量是有意义的。我认为如果有任何可以忽略不计的性能。实际应该发生的是,在将值放入类变量之前,它应该是清理的,即在setDog()中。
答案 2 :(得分:0)
我想说这更像是个人编码风格的问题。
我有时会像handleDogIndirect()这样做,因为它让我对我的代码可视化的方式更有意义,因为它涉及更少的输入(特别是更少按住shift键),并且因为我认为它读得更好。 / p>
我会试着解释为什么它对我更有意义。功能是他们自己的小世界,这就是为什么他们有自己的范围。当他们在那个范围内工作时,他们很高兴,所以我首先要确保将他们需要的所有东西都拉到他们的范围内。一旦完成,我不必考虑其他任何地方发生的事情,只考虑该功能的本地功能。减少思维混乱。
然后当他们完成他们的工作时,我将他们有用的数据放回原来的位置。
我认为如果你的方法有点长或复杂,它会特别有用。