-5

我有 5 种或更多方法作为以下方法。我希望能帮助我编写一两种方法来减少代码并提高代码的可用性:

public function index() {
    $this -> load -> view('header');
    $this -> load -> view('navigation');
    $this -> load -> view('default_form');
    $this -> load -> view('footer');
}

public function view_courses() {
    $this -> load -> view('header');
    $this -> load -> view('navigation');
    $this -> load -> view('courses');
    $this -> load -> view('footer');
}

public function view_classrooms() {
    $this -> load -> view('header');
    $this -> load -> view('navigation');
    $this -> load -> view('classroom');
    $this -> load -> view('footer');
}
4

1 回答 1

1

有几种方法可以解决这个问题,哪一种有意义(如果有的话)完全取决于个人意见。(我的 PHP 非常生锈,我从未使用过 CodeIgniter,所以这可能在语法上不准确。将其视为伪代码演示。)

一种方法可能是创建更小的“帮助”函数,它只是将功能委派一点。像这样的东西:

public function view_classrooms() {
    $this -> view_header_and_navigation();
    $this -> load -> view('classroom');
    $this -> view_footer();
}

private function view_header_and_navigation() {
    $this -> load -> view('header');
    $this -> load -> view('navigation');
}

private function view_footer() {
    $this -> load -> view('footer');
}

不过,在这种情况下,回报正在迅速减少。它非常适合重构更大的功能。

另一种方法可能是制作一个通用函数:

public function view_something($content) {
    $this -> load -> view('header');
    $this -> load -> view('navigation');
    $this -> load -> view($content);
    $this -> load -> view('footer');
}

当然,这里的权衡是在调用函数时你需要知道实现细节,如果只是一点点的话。为了解决这个问题,您可以创建委托函数来使用它:

public function view_courses() {
    $this -> view_something('courses');
}

但是,同样,回报可能会开始迅速减少。

您目前采用的方法实际上并没有本质上的错误。(除非这只是一个小例子,而且问题的规模要大得多。)每个视图都明确地由它的部分构成。当然,这些部分经常重复。但除了代码美学之外,这是否代表了一个实际问题?这段代码是否经常更改,有很多重复的工作?如果是这种情况,在决定如何重构时要仔细考虑重复的工作,而不仅仅是代码美学。由于重复的工作是要解决的实际问题,而不是代码。

于 2013-09-25T16:35:54.490 回答