PHP:在方法中经常遇到简单的操作

时间:2013-05-25 01:35:30

标签: php design-patterns

我一直在阅读很多关于编写“高质量”PHP脚本的内容,很多人都提到将经常遇到的简单操作放在方法中是一种很好的做法,比如乘法等。

[实施例]

<?php
class Test
{
    public function __construct()
    {
        $result = 0;

        for ( $i = 0; $i < 10; $i++ )
        {
            $result += $this->multiply($result, $i);
        }

        return $result;
    }

    private function multiply($a, $b)
    {
        return $a * $b;
    }
}

[问题]

为诸如乘法,除法等简单函数创建新方法是否值得。

不是更好吗?
$result += $result * $i;

而不是创建新方法。这些方法确实是一种很好的做法,即使它只是微秒,它们也会降低性能。

修改

[问题2] 随机找到这段代码:http://pastebin.com/XjmcfHsK,您认为不需要乘法吗?

2 个答案:

答案 0 :(得分:1)

我认为在这种情况下,一行简单的代码$result += $result * $i;就足够了。函数multiply是多余的,除非预见到某种可伸缩性,那么在这种情况下我会以这种方式编写代码:

<?php
class Test{
    private $result;
    function __construct() {
        // our construct does what it do best: initialize $result
    }

    function multiply() {
        for ($i = 0; $i < 10; $i++) {
            $this->result += $this->result * $i;
        }
        return $this->result;
    }
    // by moving the for loop inside multiply
    // our code becomes more concise, modular and it encourages high cohesion 
}

NB:在做出设计决策时你应该记住的经验法则是你不应该让性能影响你的编码风格,除非你的代码证明速度慢到可以接受的合理响应度给用户。

答案 1 :(得分:1)

通常,当您发现自己在整个应用程序中反复重复相同的代码时,就需要将其移动到自己的函数中。 特别是如果你在几个不同的类中使用它。

您可以尝试将所有常用函数放入某种类型的Function类中,并在加载时实例化它:

<?php

class Functions {

      public function multiply($num1, $num2) {

        return ($num1 * $num2);
      }

}

$helper = new Functions();

?>

然后,只要你在每个页面上的require_once函数类,只需说出

即可在应用程序的任何地方调用它。
$helper->multiply($arg1, $arg2);