0

我一直在阅读很多关于编写“高质量” 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,你觉得不需要乘法吗?

4

2 回答 2

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 
}

注意:在做出设计决策时,您应该记住的经验法则是,您永远不应该让性能影响您的编码风格,除非您的代码被证明是缓慢的,以至于损害了用户可以接受的合理响应能力。

于 2013-05-25T02:39:20.153 回答
1

通常,当您发现自己在整个应用程序中一遍又一遍地重复相同的代码时,您就需要将其移至自己的函数中。特别是如果您在多个不同的类中使用它。

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

<?php

class Functions {

      public function multiply($num1, $num2) {

        return ($num1 * $num2);
      }

}

$helper = new Functions();

?>

然后,只要你 require_once 每个页面上的函数类,你就可以从应用程序的任何地方调用它,只需说

$helper->multiply($arg1, $arg2);
于 2013-05-25T07:11:00.683 回答