Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:将经常遇到的简单操作放在方法中_Php_Design Patterns - Fatal编程技术网

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

PHP:将经常遇到的简单操作放在方法中,php,design-patterns,Php,Design Patterns,我已经读了很多关于编写“高质量”PHP脚本的书,很多人都提到将经常遇到的简单操作放在方法中是一个很好的实践,例如乘法等 [示例] <?php class Test { public function __construct() { $result = 0; for ( $i = 0; $i < 10; $i++ ) { $result += $this->multiply($result,

我已经读了很多关于编写“高质量”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;
    }
}
而不是创建新方法。这些方法真的是一种很好的实践吗?它们是否会降低性能(即使是微秒级)

编辑:

[问题2]
随机发现这段代码:,你认为不需要乘法吗?

我想一行简单的代码
$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 
}

通常,当您发现自己在整个应用程序中一遍又一遍地重复相同的代码时,您需要将其移动到自己的功能中。
尤其是在几个不同的类中使用它

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

<?php

class Functions {

      public function multiply($num1, $num2) {

        return ($num1 * $num2);
      }

}

$helper = new Functions();

?>

这样做完全没有意义,代码的可读性和可维护性也大大降低。是的,它大大增加了开销。在单次使用的情况下是次要的,但是加起来很快。我随机发现了下面的代码:你认为乘法方法不需要吗?它也是多余的。最好将乘法移到
calculate
中,这样代码就更简洁了。
<?php

class Functions {

      public function multiply($num1, $num2) {

        return ($num1 * $num2);
      }

}

$helper = new Functions();

?>
$helper->multiply($arg1, $arg2);