【问题标题】:PHP OOP - Is it a good/bad directly adressing properties?PHP OOP - 直接处理属性是好还是坏?
【发布时间】:2010-03-22 14:56:01
【问题描述】:

我将尝试通过一个例子来展示这一点:

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;
  }
}

在不同情况下哪个功能更好 - handleDogDirecthandleDogIndirect

  • 为什么?
  • 哪一个可能更快?
  • 我应该使用哪一个?

顺便说一句: 由于代表重新计算,我无法再从 wordpress 使用我的 OpenID 登录。它一直说No OpenID endpoint found.。非常感谢任何帮助。

【问题讨论】:

  • 您可能应该在 meta 上询问您的 OpenID 问题。
  • 如果你给出一个真实的例子会更有帮助。关于打印“hello”的最佳方式的讨论毫无意义。

标签: php loops


【解决方案1】:

我会使用handleDogDirect,因为它正在访问$dog实例,这似乎是您想要实现的目标。后一个函数似乎创建了一个不必要的变量来执行 same 函数。

作为惯例,每当我在类函数中使用类的属性时,我总是直接使用$this 关键字。

如果两者中的任何一个存在性能问题,它可能可以忽略不计。我强烈建议在担心性能问题时担心性能问题。

【讨论】:

    【解决方案2】:

    我认为无缘无故地创建一个新变量没有意义。我认为性能受到的影响可以忽略不计。实际应该发生的是,在将值放入类变量之前,它应该被清理,即在 setDog() 中。

    【讨论】:

      【解决方案3】:

      我会说这更多是个人编码风格的问题。

      我有时会像 handleDogIndirect() 那样做,因为它对我来说更有意义,因为我可视化我的代码,因为它涉及更少的输入(尤其是更少的按住 shift 键),并且因为我认为它读起来更好。

      我将尝试解释为什么它对我更有意义。函数是它们自己的小世界,这就是为什么它们有自己的范围。当他们在那个范围内工作时,他们很高兴,所以我首先要确保我将他们需要的一切都纳入他们的范围内。一旦完成,我就不必考虑其他地方发生了什么,只需考虑该功能的本地情况。减少头脑混乱。

      然后,当他们完成工作后,我将他们的有用数据放回其所属的位置。

      我认为,如果您有一个有点长或复杂的方法,它会特别有帮助。

      【讨论】:

        猜你喜欢
        • 2011-05-04
        • 2012-01-03
        • 2012-01-02
        • 1970-01-01
        • 2011-04-11
        • 2021-03-10
        • 2011-03-30
        • 1970-01-01
        • 2014-07-23
        相关资源
        最近更新 更多